Martin Carradus introduces his latest programming tools.
!BBCIndent
!BBCIndent is designed to indent BBC BASIC programs to make it easier to follow any nested routines and procedures. It also makes it easier to see and follow CASE and IF THEN statements over multiple lines, for example, here is an original piece of code.
DEFPROCpol
SYS"Wimp_Poll",,b% TO r%:CASE r% O
WHEN 1: PROCredra
WHEN 2: SYS "Wimp_OpenWindow",,b
WHEN 3: SYS "Wimp_CloseWindow",,b
WHEN 6: PROCmouseclic
WHEN 7: PROCenddra
WHEN 9: PROCmenuclic
WHEN 8: PROCkeypres
WHEN 17,18 :PROCreceiv
WHEN 19: PROCnoack(b%
ENDCASE:ENDPRO
And here is the same after BBCIndent has processed it.
DEFPROCpol
SYS"Wimp_Poll",,b% TO r%:CASE r% O
WHEN 1: PROCredra
WHEN 2: SYS "Wimp_OpenWindow",,b
WHEN 3: SYS "Wimp_CloseWindow",,b
WHEN 6: PROCmouseclic
WHEN 7: PROCenddra
WHEN 9: PROCmenuclic
WHEN 8: PROCkeypres
WHEN 17,18 :PROCreceiv
WHEN 19: PROCnoack(b%
ENDCASE:ENDPRO
To load !BBCIndent double click on the !BBCIndent icon, an icon then appears on the icon bar, then drag a BBC Basic file to the bar icon, or left click on the bar icon and drag the BBC Basic file to the 'SetUp' panel that appears. This enters the file name into the upper slot on the panel. Alternatively the file name may be typed manually into this slot.
Select the appropriate options on the 'SetUp' panel, then click on the 'Run' icon on this panel. After a while a Indented BBC Basic file is offered for saving in the same directory as the BBC Basic, but with its name prefixed with a capital "I".
!BBCIndent and !BBCText in action
Selecting the 'Help' or 'Description' buttons on the 'SetUp' panel and clicking on the 'Run' button gives out extra information.
Additional Help is available by clicking the middle 'Menu' button over the bar icon and clicking over the 'Help' entry on the menu that appears, or by using the Acorn !Help application in the 'Apps' directory on the icon bar.
!BBCText
There is also an associated program called !BBCText, this converts tokenised BBC BASIC into normal text. If you have ever loaded raw BBC BASIC into a a text editor you may notice that it is full of control characters, instead of BASIC keywords. BBCText will convert each real BASIC token back into English. BBCText works in a similar way to !BBCIndent, you drag a file into the Window, then click on the Run button, then drag the new file out from the save dialogue box.
Martin Carradus
ÿÿÿÿISSUE1/BASICV/INDEX.HTM Issue 1, BASICV a Dabhand Guide Part 5
BASICV a Dabhand Guide Part 4
Alligata Media
About this book
We have largely left this book unaltered: the original edition was written by Mike Williams and included a section relating to the DABS Press books and software which has, of course, been deleted and we refer you to
At present we are considering an update to this book to cover the use of more modern BASIC in the shape of that supplied with the Risc PC, but offer no promises beyond this re-print. This book was produced using Ovation Pro on my StrongARM Risc PC; with the whole mainly typed from an original which was produced using VIEW on a Master Compact before being laid out for press in MacAuthor.
This book will be serialised in the next few issues of RISCWorld.
Contents
11 : Sound
BASIC Sound Instructions
Setting the Stereo Position
Setting and Reading the Beat
Setting and Reading the Tempo
Sound Statement
Star Commands
12: Commands
13: ARM Assembler
Calling Machine Code Routines
Using CALL with Parameter Passing.
Alligata Media
ÿÿÿÿISSUE1/DISC/INDEX.HTM Issue 1, DiscWorld
DiscWorld
Aaron Timbrell rounds up the software directory
As it's the start of a new volume I thought we would kick off with a real "Biggy" this time. After the number of requests for non APDL software we have negotiated a deal with DanSoft Developments to bring you WebFX3D, and later in this volume the WYSIWYG SiteWriter. For now though lets look at WebFX3D by reprinting part of a review published in RISCWorld volume 1.
WebFX3D
Many computer users build their own web site, maybe to give information
about something, distribute some piece of software they've written, or
just for the sake of it. Nowadays, no web site is complete without some
pretty pictures to make things more interesting. Well, we can easily knock
up some quick drawfiles (even put some fancy effects such as shading in
with DrawWorks) and then convert to GIF, PNG or whatever format we wish
with one of the shareware utilities. Such images can be very effective,
but what about when you want something different? Maybe you want a sphere
to use as bullet points, or maybe you want some shape or text to stand out
of the page. You need to create a 3 dimensional image.
There are really only two choices when it comes to creating 3D images
easily on RISC OS. TopModel, and WebFX3D. Topmodel is probably a bit
overkill and expensive for someone who just want to knock up a few eye
catching images for a web site, newsletter or poster. This is the market
at which WebFX3D is aimed.
WebFX3D is developed by one man company Dansoft Developments, run by
Daniel Jonson of Christchurch New Zealand. Dan says that he has always
"had a calling to develop software which I consider to be great". So is
this great software?
WEB FX 3D main screen
BasicsThe use of WFX can be split into
3 main phases - entry of text or drawfile; setting lighting, camera angles
and other options and finally rendering. WFX is a very large program and
there are many options at each stage. Let's go through the process and see
how everything works.
The first thing that strikes you about WFX is the loading panel - it's
smart and different. Now click on the iconbar icon and as expected a
window appears. A window that is unlike any window you've ever seen
before. There's a box to enter the text or drop a drawfile into, another
box to choose your font, and some controls. Looking at the screenshot, we
can see that the controls don't have labels. This isn't a problem, as the
black area in the lower left corner displays the name and current setting
of each control as you move the mouse over it. You'll have looked at the
screenshot and thought "I love it!" or "I hate it!". More about user
interfaces and window designs later.
WEB FX 3D loading screen
The controls are used to set Join segments and curve segments
(basically how smooth object edges are), text ratio (make the letters
fatter or thinner) and bevel type height and width. There is also a button
that controls "angular optimisation" - we don't need to worry about this
for now.
Overall, despite the unconventional design and lack of permanent
labels, all this is quite easy to do. Although the user interface grates
at first, it's obviously been thought about long and hard - the pop-up
text works particularly well.
I've entered the word "Test" and made the letters slightly fatter than
normal. I've also selected a rounded bevel and turned curve and line
segments up to maximum. Let's click on "Generate" and go onto the next
stage.
Clicking on Generate switches the machine to single tasking whilst WFX
triangulates all the points needed to define our object in space. The
program shows you this process as it happens. It takes a few seconds for
short words, longer if more letters are involved. At the end of this
process, you are told if there are any errors, and the initial 3D scene
appears. The object is shown in wireframe, those with faster machines will
want to switch on surface modelling and shading to get a better idea of
what the finished scene will look like.
You can set the colour of the object here, using a colour picker that
is again different to RISC OS convention. It works rather like an artist
would mix paints (to my mind at least). You can also set options such as
shininess, rotate the object on X or Y axes, move the camera and zoom in
and out. You can experiment and see on the screen a good approximation of
what your creation is going to turn out like. There isn't an undo feature,
or even a 'restore to default'. This is actually quite a serious omission
as it can be quite difficult to achieve what you want once you've rotated
on both axes and got it wrong.
WEB FX 3D colour picker
You can also set a fog effect here, to give the impression of an
atmosphere. This is particularly when the object is rotated to run
diagonally 'into' the screen.
Clicking on the multicoloured sphere to the right hand side takes you to
the lighting windows. This consists of four views, one each from the
front, side and top of the object, and finally a smaller version of the
main screen, showing the effect of your lighting. This part works quite
intuitively. To add a light, drag one from the icon at the bottom of the
screen. To get rid of a light you simply drag it to the bin at the bottom.
The currently selected light is shown lit up and using the icons at the
top of the screen you can set its colour and intensity. It's quite easy to
position lights by dragging them around the three views and seeing the
preview updated after every drag. You can zoom in, and also scale the view
to fit every light and the object into the closest possible view with one
click. Finally, the background colour can also be changed from this
window.
WEB FX 3D Lighting window
Again, none of the window designs are what one expects from a RISC OS
application. There is a hint of stonework, it feels almost like you're in
a studio. All the buttons are designed to complement this style rather
than comply to a standard.
If you're feeling lazy, you can apply lighting, atmosphere backgrounds
and surface properties from a gallery. Likewise, if you are particularly
pleased with some combination, you can save it as your own gallery entry
for future use.
You can use some or all of the gallery attributes by clicking on the
relevant radio buttons. In this way you can combine different elements
from different galleries.
Now it's time to click on the "Render" button on the right hand side of
the screen. But first let me explain what I've done with the word "Test".
I've coloured the surface yellow, set the shininess quite high and rotated
it slightly away from us on the X axis. I've then put a red light above
and to the right, with attenuation so we get a variation in intensity
across the surface. There is also a plain white light with no attenuation
below and very slightly to the left of the word. The red circle on the
lighting view shows where the attenuation starts - another red circle
shows where it ends (the light has no effect), but I've zoomed in so it's
out of view.
When you click on Render, you are presented with a dialogue box to set
the image size, choose a background colour, switch on antialiasing and
it's quality and choose the output format. Tabs allow you to set animation
options and filters. Filters allow you to add a drop shadow, with user
defined blurring and colour. you can also specify an image map to be used.
So you can make the object look like it's made of wood, metal or some
other texture by using an appropriate image. Some image maps that can be
used are supplied with WebFX3D. It's a pity that you can't preview these
effects, so it can be a bit of a shot in the dark at first.
WEB FX 3D Rendering Options
Images can be output as:
16 million colour sprite
256 colour sprite
JPEG
16 million colour targa
16 million colour PBM When you're satisfied, clicking on
render again sends the machine into single tasking mode. For the "Test"
image rendering with full antialiasing at 400 x 173 size took around 30
seconds. An 8 frame animation of the scene took a little over 5 minutes on
my StrongARM RiscPC. Bigger output image sizes take longer, as do
animations with many frames. Animations are output as a single sprite
file, which can be easily converted to animated GIF's in seconds with
Peter Hartley's excellent !InterGIF. I've rendered the scene, and also
done an 8 frame animation of the word "Test" to give you an idea of what
WebFX3D is capable of. The direct sprite and JPEG output is stunning,
converting to GIF loses a little of the quality. I've also put together
some other examples using some of the supplied gallery options, drop
shadows, plugins and image maps.
Plugins
Supplied with the application are four plugins. Each of these loads a
scene directly into the main WebFX3D window ready for manipulating and
rendering. Briefly, there is:
VRML file loader
Image file loader capable of loading any image ChangeFSI can handle.
Sphere generator
Torus generator Each of these plugins is useful and add
greatly to the usefulness of the application. In particular, the ability
to save and load VRML files means it's easy to save your creation, do
something else and come back to it later.
There are also separate plugins which manipulate an image that has
already been created. They are:
Bend
Colourise
Scale
Twist
Wave Most of these are self-explanatory from the names. And
happily there is a way to undo the effects of applying a plugin.
Unfortunately it's a bit of a fiddle to run these plugins - you have to
open up the !WebFX3D application, find the relevant directory and run the
plugin module. Surely it would have been possible to make the plugins
accessible from a menu within the main application.
User Interface
You can't write about this application without considering the user
interface. It's so radically different to anything else on RISC OS. Dan
says he wanted to do something that "impresses others as much as Kais
Power Tools [on the PC] impressed me". Dan also looked at a number of the
PC packages when designing the interface for WebFX. If I'm honest, I am
impressed by the look and feel of WebFX3D. It isn't to everyones taste by
any means, and Dan says he's learnt from both WebFX3D and SiteWriter to
focus more on what users want and expect. As it stands, the interface is
well thought out, intuitive and easy to use. If you can get over the fact
that it doesn't implement some things in a manner compatible with the
Style Guide you'll almost certainly like it.
Documentation
I like clear instructions and I'm also a strong believer in printed
manuals. I really don't like disc based manuals, mainly because they
usually so badly implemented. How are you supposed to take yourself
through a tutorial whilst the whole screen is covered by an Impression
document? The documentation for WebFX3D is disc based, and once again
Dansoft have ignored convention and produced something slightly different.
The documentation works rather like an HTML document, in that it has
active links. However, it covers only a narrow portion of the screen, so
you don't have to constantly shift windows around whilst reading and
trying things out at the same time.
WEB FX 3D Online manual
All the instructions are well illustrated and concisely written. I had
no problems learning how to use the package. I actually like the way this
has been done and frankly it puts some other publishers attempts at
documentation (both printed and 'online') to shame.
The Future
Dan never expected to get rich from WebFX3D - "I thought I could make
some pocket money out of it", it's more of a hobby. When a hobby stops
being rewarding, or when work demands more time it's difficult to commit
to the future. Dan is entirely honest when it comes to the question of
future development "unlikely to be significantly improved" are what he
says.
What about selling it to another developer? Apparently Dansoft was
approached some time ago but for various reasons Dan decided he was unable
to accept the offer. "Nowadays, yes they could take over [the] software I
think".
However, none of this means that Dan has lost enthusiasm for WebFX. He
talks of making an effort to improve the software before too long - it's
just a question of finding the time to do so.
"To be fair, I wouldn't suggest anyone purchase this software if they
expect a subsequent version to be released." He makes the point that
software should only ever be purchased on what it can do, not what it may
do in the future.
Conclusion
I like WebFX3D. It does exactly what it says on the tin in a fun and
easy to use manner. It isn't perfect, and there are some features that
could be improved. There really ought to be a mechanism to undo all
actions carried out. The current method of accessing the plugins makes the
package feel slightly unfinished. This is a shame as the presentation is
otherwise very slick.
Other minor improvements I'd like to see would be more control over the
animation options - particularly the orientation and position of rotation
axes. As mentioned it would be nice to see the effect of drop shadows and
image maps before committing to rendering.
Another omission is that the centre of rotation in the main window is
fixed - being able to shift it would make it much easier to achieve
certain orientations.
There are some other very minor improvements that could be made to
dialogue boxes and suchlike but nothing to get excited about. As for the
output, WebFX3D does it's job very well. Using the tools provided in the
main application and the plugins as required, it is possible to create
almost anything that you wish. Of course it's never going to be able to
render a 3D model of a car, but then you really should be using something
else for that. For text and simple shapes you'd be hard pushed to find a
better application than WebFX3D.
Pros:
Well designed
Well documented
Interesting and fun to use
Excellent output
Lots of options and user control to create many different effects
Very stable
It's cheap
Good support from Dansoft
Cons:
Some people will not like the interface
Awkward to access plugin effects
No undo for most actions
Limited potential for future improvement
Putting things into perspective many of the faults are relatively minor
and I wonder if Dan couldn't find the time to make some small changes.
It's clear that WebFX3D is the product of a very skilled programmer who
can design an application as well as he can hack code. The product exudes
quality and style and I suppose this is a reflection of Dans own
enthusiasm for his software.
The complete DiscWorld line up
BASIC
Martin Carrudus presents his latest BASIC tools.
Games
All the games from this issues games world column.
PD
All the latest PD, shareware and freeware releases from the PD column.
PowerBase
The latest version of PowerBase.
StoryText
Impression TextStory File to Text File Converter.
ToolBox
This contains two sets of Toolbox Modules. The Castle archive contains the latest 26/32 bit neutral system components, required if you want to run a lot of new software releases on 26bit machines (ie. anything that isn't an Iyonix). The RISCOS Ltd archive contains later and improved versions of a number of modules and is suitable for all versions of RISC OS from 3.1 onwards.
Welcome to the start of Volume 5 of RISCWorld. Just like last issue I am writing the editorial bit of RISCWorld a bit early, well 3 weeks early if you want the truth. Why am I doing this? Well this time I have a decent excuse. The Wakefield show is coming and I have quite a bit of work to do on the new versions of VirtualRPC that we are going to release. So In true time honoured editor style I am writing this at 3:30 in the morning having decided that I need to pull an all nighter to get RISCWorld hammered into shape before the show.
I could wait till after the show, but that would only give me a week or so to get RISCWorld finished, and that simply isn't enough time. After long days of practice I think I have finally cracked how to do an issue. I collate stuff for around a month (articles, ideas, fluff, rusty vehicles etc), then sit down one afternoon and see what fits into the flatplan I worked out whilst doing the previous issue. I then ignore this totally and start putting bits and bobs together. It helps that we have a team of writers who deliver articles early, in fact (and tempting providence) would you believe that 8 articles have already been written and submitted for this issue 2 weeks ahead of the copy deadline? This is the 2nd issue running where this has happened, surely it can't continue, but I would be delighted if it did.
So I start assembling what has already been written, then I start altering stuff, then I start writing my own articles, and since it's one that requires no real research I can start with the editorial, which is where I came in. It's now 3:37 in the morning and what can I find to rant about.
Editors Rant of the month
Last month I had a good whinge about insurance. It's now 3:49 and I have so far been unable to find anything to moan about. I have checked to see if I have a temperature, and indeed I do, regretfully it's normal, so why can't I find a single thing to get my teeth into? Well I suppose it's because almost nothing has gone properly wrong over the last 6 weeks or so. The Shogun (Oh look he's talking about cars again - HJ) managed to break its wiper motor, but I found a replacement for £30 including VAT and carriage, and it didn't really rain very much while the new motor was speeding through the night(s) on a highly powered Parcel Farce ox drawn cart. Fitting the new motor took 10 minutes, and it worked fine, so that isn't a very exciting story.
I did buy a new 19" LCD monitor, but again it wasn't any fun, I went to the shop, bought it, came home with it, plugged it in, it worked....which is really annoying. I have extended the drive outside our house to provide an extra parking place, which did entail digging out a couple of tons of earth by hand, but it was only 3 weekends work, and all the earth went to the tip in rubble sacks. I did hope for a bit of excitement when ordering the concrete to fill the hole. Would the driver turn up, would the mix dry too soon? Well the driver turned up early, my helpers had already turned up even earlier, and we had a light drizzle all day so the concrete didn't start setting. So again I had nothing to whinge about.
I had to buy some new toner for my colour laser printer, which did cause a big pain in the wallet, but on checking my records I see that the cartridge lasted almost exactly its quoted page count, so I can't really complain and it's only 3:55, why don't I look out the window and see if the sun has come up? No it hasn't, oh well, it's never very dark outside anyway because of the street lamps, which does make using my telescope a near pointless exercise, but I only have to drive 4 minutes and I am out in the country...
So to sum up nothing seems to have gone wrong and I am bloody furious about it, I mean how am I supposed to fill up editorial articles if I can't find anything to complain about...oh.....
Printing RISC World
The new look of RISC World means that you will no longer get the yellow background when printing articles from RISCWorld. However you will still get the blue border on the left unless you turn off the printing of background images. The example below shows the print dialogue box from Fresco.
As you can see the option "No Background" is ticked. If you want to print out any of the RISCWorld pages and don't want to waste ink on a blue border then make sure you have clicked a similar option in your browser.
Aaron Timbrell
ÿÿÿÿISSUE1/EDUC/INDEX.HTM Issue 1, The Education Column
The Education Column
Andrew Harmsworth with the latest Education news
Many of you must have wondered what had happened to the Education Column for the last few issues (Aaron certainly has!). Well, I've been busy. Getting married apparently takes huge amounts of organisation. That and the fact that GCSE.com seems to be generating lots of advertising revenue, little things like this get left to one side.
Anyway, it's back. This month I take a look at some simple digital image manipulation - that anyone can do - yet most either ignore or fail to realise it's possible. Oh, and a moan about PAT testing.
PAT Testing
I've been proud of the fact that I managed to prevent a large number of RiscPCs and A7000/+ machines from being skipped in my school. They've been incredibly useful in my department - for analysing experimental results (GraphDraw), for datalogging (Insight 2 with DCP Datameters or LogITs), for quickly throwing out a Textease document, for TechWriter, old BASIC teaching programs, etc.
Every year, as I suspect is standard practice, portable appliance testing is carried out (PAT testing). This year they brought with them more sophisticated equipment. Previously the only test carried out on computers was a cursory glance at the power lead (and checking of the case for holes). This year, they failed 4 RiscPCs, 5 monitors (AKF60) and 3 A7000s. I don't know what is wrong with them. They just produce an exciting "fail" on the display, despite working perfectly. Ugly red stickers with "DO NOT USE" have therefore been plastered all over the machines' power supply sockets. Great. Thanks. Very helpful. I wonder if anyone ever tests the PAT-testing equipment? I'd love to fail it...
It would seem, therefore, that the future of RISC OS computers in schools or businesses where PAT testing is "really sophisticated" is on PCs running Virtual Acorn. I think there's something deeply ironic about this, but I can't quite put my finger on it.
Gamma Correction (& more!) for Beginners
At time of writing, the much-hyped (and probably rightly so) Wakefield Show is about to happen. As with all RISC OS shows, websites will soon be filled with photographs taken on digital cameras (or camera phones: see
In fact, this article arose after an email discussion with Aaron. I was quietly complaining that the images he'd taken for the RISC OS South-West Show report could have done with some gamma correction. Apparently, they had been corrected! Another question for Aaron then: why were the photos GIFs not JPEGs?.(Answer - because I can't remember why, but I am sure there was a good reason at the time - ED).
GIF vs. JPEG
I'm sure this has been covered before, but the GIF file format is generally considered applicable to simple graphics, such as those you might produce using Draw or Paint. It is also limited to 256 colours and it can have a mask (to allow transparency).
On the other hand, the JPEG file format (which stands for Joint Photographic Expert Group) is - surprisingly enough - one of the best formats for producing photographic images that have millions of colours and extremely high levels of complexity.
Both the GIF and JPEG formats are compressive, meaning the file size you end up with is much smaller than if you had the same image as a SPRITE (for example). The subtle difference here is that the GIF format is lossless (unless you do something really silly) - meaning the final image has the same quality as the original - whereas the JPEG format is lossy - meaning you can choose to lose a certain amount of quality whilst saving huge amounts of file space.
Let's take a look at Aaron's first photo from the last issue:
RComp - Aaron's original image from Vol. 4, Issue 6: 62K
Let's see what happens if we load this using !ChangeFSI (which everyone has and can use on all modern RISC OS kit).
Firstly, ChangeFSI will turn it by default into a Sprite file. You can get it to produce a JPEG by clicking MENU on its iconbar icon:
ChangeFSI's iconbar menu, and JPEG options
As standard, the 'quality' is set to 75%, but this can easily be altered. 75% gives an excellent improvement to file sizes, without too much loss of quality. Let's see Aaron's image as a 75% quality JPEG:
RComp - Aaron's updated image as a JPEG: 30K
The file size is less than half that of the GIF, yet the image itself is almost indistinguishable from the first. Making the file size as small as possible is good practice for use on web pages.
Let's get back down to business regarding Gamma Correction. This is used to correct the quality of images but is more sophisticated than just altering the brightness or contrast. To a first approximation, it does both whilst retaining the overall "feel" of the photograph. ChangeFSI can apply gamma correction at the same time as many other effects. To do so, choose Processing from the iconbar menu:
ChangeFSI's Processing options
Low values of gamma correction (from 0 to 1) make colours darker; high values (above 1) make them lighter. 2.2 has a quite considerable effect, too much. Let's start from 1.1 and work through to 2.1. For ease of comparison, I've also asked ChangeFSI to make the images smaller:
Original: gamma=1.0gamma=1.1gamma=1.2
gamma=1.3gamma=1.4gamma=1.5
gamma=1.6gamma=1.7gamma=1.8
gamma=1.9gamma=2.0gamma=2.1
As is quite clear, the more gamma correction one applies, the clearer the final image can become. The colours are still not right, however. To improve the balance (that wall is white, presumably?) better software is really needed. Photodesk does a good job with white balance, and has a highly intricate approach to Gamma Correction:
RComp - Aaron's image passed through Photodesk
Finally, if you find messing around with ChangeFSI too time consuming, I strongly recommend the use of Jochen Lueg's excellent !Batch_FSI utility. This is just an additional front-end for ChangeFSI, but it allows you to dump an entire folder of images to undergo the same processing (of your choice) in one single go. So, for all of you wishing you could be bothered to slightly improve your digital images: fire it up and see if you like it!
If you have any questions or comments on the use of RISC OS computers in education, please either email education@harmsy.freeuk.com or better still join the RISC OS Education Discussion List, and air them there.
Andrew Harmsworth
ÿÿÿÿISSUE1/EXPO/INDEX.HTM Issue 1, Expo 2004
Expo 2004
The mainland Europe Expo 2004 previewed by RISCWorld
Once again the Big Ben club in the Netherlands is organising another RISC OS show on Saturday the 19th of June 2004. This is the only RISC OS show that takes place outside the UK and is supported by a number of RISC OS companies, and is sponsored by X-Ample Technology, Castle Technology, RISCOS Ltd and MicroDigital. The show will take place at Expohall, Hotel Mercure Buizerdlaan 10, Nieuwegein (near the city of Utrecht) in the Netherlands.
Map of the show venue
The Show offers exhibitions and promotions by various companies, including Dutch, German and British RISC OS dealers. A number of club members will also be on hand to offer demonstrations. This is an excellent opportunity for European customers to meet with companies based in the UK, as well as an ideal time for UK companies to be able to demonstrate their products face to face.
It's hoped that there will be a show theatre, although at the time of writing a list of speakers was not available. However the latest information can always be found on the club website at
Aemulo
Archive Publication
Castle Technolog
Des
Dr Wim
MicroDigital Europ
MWSoftwar
R-Com
RISCOS Lt
Unix Porting Projec
X-Ample Technolog
More companies are hoping to confirm shortly.
For partners of those who are going to the show, but that are not interested in RISC OS (fools -HJ) there is the possibility of a city tour of Utrecht being offered by a local guide who knows the city like the back of his hand.
The Expo 2004 offers a great chance for UK dealers to see their European customers, and for RISC OS users living in mainland Europe to try a wide range of RISC OS product before parting with any hard earned money.
RISC World
ÿÿÿÿISSUE1/GAMES/INDEX.HTM Issue 1, Games World
Games World
Paul Brett with the latest gaming news.
Welcome to volume 5 of GamesWorld. For a column that was going to be dropped 2 years ago because of the low number of RISC OS games being made available we are are not doing too badly! Last issue readers may well remember that I gave you the details of
Cycloids
Cycloids was written by Tom Cooper, and was released commercially by Software 42 in 1993. However, Imparo, who now own the rights to Cycloids and a handful of other games, have given permission for Cycloids to be re-released as freeware. So, here it is - freeware Cycloids, compatible with all versions of RISC OS from 2 to Select!
So what is Cycloids? Well it's a platform game featuring a unicycling clown, who, for some reason known only to Tom Cooper, has to navigate various levels collecting diamonds and other assorted items of treasure. To make the clowns job as difficult as possible a number of cunning badies will try and get in his way, if they succeed then the clown will fall of his unicycle and fall to his death. The game features a rather bright 256 colour palette and can get rather manic at times, especially when you need to do a pixel perfect jump whilst avoiding pink flying elephants.
Cycloids in action
To run the game simply double-click on !Cycloids. You can also redefine the controls by running !CycKeys. If you don't want to change the keys then you will need to use the defaults which are:
Z- Lef
X-Righ
' - Jum
Return - Fire (once you've collected a weapon
Escape - Quit to main menu/quit to deskto
Darkwood
For those that like a bit more meat on their games AcornArcade have also released the massive adventure game Darkwood. For those that have never seen this game before it was released to take some advantage of the more powerful RiscPC type hardware and offers a real 3D landscape to walk around, along with plenty of sub quests to undertake for the large number of non playing characters that you can interact with. In play Darkwood feels quite a lot like a Zelda game (for those that don't know the Zelda games are published for Nintendo hardware - Aaron). Like Cycloids this was also written by Tom Cooper and is quite an immersive experience.
Darkwood, in the wizards house
Darkwood can be played on RISC OS 3.5 to 3.7, Select and RISC OS 5 (if you use a copy of !A310Emu), there is a bug that causes the game to crash under RISC OS 4 if you fire whilst inside a building.
Darkwood, outside the wizards house
The controls are as follows:
Z and X - Turn left and righ
' and / - Walk forwards/backward
Space - Fir
Return - Jum
P - Pause/ingame option
Ctrl-Escape - Quit to men
Look a pub...
The mouse is used for interacting with many objects in-game, such as the action buttons in the bottom-right of the screen. Some actions such as dropping and throwing require an item to be selected in your inventory first. If the game is running too slowly on your machine, then it would be a good idea to look at the graphics options in the in-game options menu.
...lets go in.
Before I go I will leave you with a few helpful hints for playing DarkWood.
To go upstairs you have to keep pressing Jum
Try talking to everyone you mee
Some badies can be faster that you are so back away from them whilst firin
Wizards don't tend to swim very well
I hope you enjoy these two releases, I will back with more games next issue.
Paul Brett
ÿÿÿÿISSUE1/GAMES2/INDEX.HTM Issue 1, RISC OS Games roundup
RISC OS Games roundup
Matt Thompson
Despite the lack of new releases appearing for RISC OS machines, there are still many games still available which are well worth investing in which you may have missed or just never got round to buying them, there are some very good value for money compilations available and also official free downloads from the internet.
Where can I get them from ?
Go to
CJE Micros and The 4th Dimension
The 4th Dimension,
Liquid Silicon
Liquid Silicon
APDL
APDL,
Rcomp Interactive
Rcomp Interactive,
Uffenkamp Computer Systeme
Uffenkamp Computer Systeme
The Data Store
The Data store
Ebay
Ebay
Newsgroups
People often advertise their old games for sale in csa.acorn.misc, or csa.acorn.misc, a bargain or two can often be found.
Apologies to any other games suppliers/developers I have missed out, if I have missed you it's because I didn't know about you, so make yourself known!!
Which Ones To Get?
Everyone has their own idea's to the best games and the worst ones, but heres a quick selection of some of my favourites from over the years in no particular order.
Magic Pockets
Simon The Sorcerer
Darkwood
Screenshots taken from the games running on !A310Emu on an Iyonix.
I couldn't write an article on games without mentioning my all time classic game which is :
Jet Set Willy - the version available for RISC OS is by Darren Salt and is public domain and available from
It won't work
The problem is, as technology moves on, many of the older games no longer work, many of them have been updated to work with newer machines, and a large number of patches are available to help get those games running again the following sites are worth checking out
Users of RiscPCs might want to check out !StrongGuard
Many of these games won't run on the Iyonix, but by using !A310emu a free program currently work in progress and is available from
So there you have it, until the new games come along, theres plenty to keep the RISC OS game player entertained, and thats without even mentioning PD games and emulation of games from other machines.
Matt Thompson
ÿÿÿÿISSUE1/HUGHJ/INDEX.HTM Issue 1, The Hugh Jampton Experience
The Hugh Jampton Experience
He's back...herrrrrre'sssssss....Hugh!
So here we are again, at the start of another new beginning for RISCWorld, the start of volume 5, or a bit past the end of volume 4, take your pick. Anyway lets launch straight into...
The caption competition
Anyone who hasn't cancelled their subscription might remember this:
I can safely say that we have had an improved response over last time, so in no particular order we have...ta ta ta tata tata!
"Intel's new P5 Processor - They're currently having problems with cooling !"
John Crane
"Boy, these Pentiums sure run hot!"
Dennis Williams
"No it's not a cooling fan: quite the reverse. It's a wind turbine to power my RISC OS machine."
Chris Newman
"Do you hate noisy internal fans ? This could be the answer"
John Crane
"PENTIUM 5 THE FASTEST FAN ON THE MARKET TODAY"
Dennis Williams
"Stop! Don't turn the fan on just yet, I am frying my bacon and eggs."
Alan Shooter
"You think your internal fan's noisy, wait till we crank up this little beauty!"
John Crane
"Intel Outside!"
John Crane
Puzzled & angry wife from kitchen - "Darling, I think some yobo has stolen the extractor fan from above the cooker."
Chris Newman
"Fantastic!! We can now produce more hot air than the politicians."
Alan Shooter
However for careful use of understatement I have decided that we will have two joint winners, and they are:
"New Cooling fan for PC slightly larger than expected"
Matt
"Well, I ordered it on-line and I could possibly have typed the decimal points in the wrong places in the dimensions box....."
Chris Newman
Congratulations to all our competitors in what was a very close battle, the fact that we have joint winners should indicate the overall standard, so what can out captioneers come up with for this?
Send your entries to HughJ@riscworld.co.uk and you too could join the rich and famous (if you win the lottery).
Hugh's picture gallery
So it's time for the last bit of the magazine, my regular photo gallery...
so who remembers the RiscPC with a pizza oven in it? Here's the car it was delivered in.
At least this wasn't the driver.
Mind you with driving like that, this could easily be the result.
Still back in the real world RISC OS dealers are rushing to Wakefield.
They should be OK, as long as they aren't trying to catch the train.
And yet again it's time to end with the cute little doggy...
Within the last couple of weeks the Aemulor team proudly announced the initial release of Aemulor Pro. I think I can forgive them the slight delay now that I've seen the magic Adrian and Neil have worked on this important piece of software.
Aemulor for Omega?
Mind you, the delay is hardly a drop in the ocean compared to the ever-on-the-horizon MicroDigital Omega (which has been shipping for 12 months now - ED), which is still to receive its touted XScale and networking components (networking is shipping now - ED). One of the reasons cited for the Omega's delay (again I point out that it has been shipping for 12 months - ED) is the ARMTwister technology which allows 26-bit code to run natively on the Omega's 32-bit-only XScale processor (similar to that used in the IYONIX).
Seeing the success Aemulor has enjoyed in getting incompatible software running on the IYONIX, and the impressive speed with which it converts 26-bit code to its 32-bit equivalent, I wonder if MicroDigital would consider it wise to commission the Aemulor team to produce a version for the Omega and simply do the code conversion in software rather than spending more time developing the ARMTwister.
Right On, Commander
Aemulor Pro now allows the IYONIX to do run some software which even StrongARM RiscPCs are unable to run. Using Aemulor Pro it's now possible to transparently emulate an ARM3 A5000-class machine, including the old video and sound support chips, meaning that your Aemulor-equipped IYONIX can play games such as the unpatched Chocks Away or Stunt Racer 2000, and a good number of other non-StrongARM games. Where included in the games, sound is played back under emulation at a quality imperceptible from that obtained via the RiscPC the last time I heard them.
I've had great fun playing some old favourites (in fact this review was badly delayed due to such 'research') such as Spheres Of Chaos complete wit
psychedelic sound effects, Super Foul Egg ('Oh Yeah!'), TEK, Syndicate and Heroes of Might and Magic II. Exodus an
MarsQuake hav
been dusted off and work well, although I started off having some troubl
with Elite (data aborts and other errors). I suspect it may have somethin
to do with the fact that I was using an oddly patched copy so I got
fresh copy from AcornArcade whic
works well - smooth, fluid motion and possibly slightly quicker than on m
StrongARM RiscPC which adds to the action and excitement. It's weird ho
you can pick up flying a Cobra Mk III again after so long away from th
colourful seat. I suppose it's like riding a bike; you never forget
Low-colour screen modes
Aemulor Pro also provides the long-awaited low colour depth screen mode
which allows older games and important applications such as Sibelius to ru
once again - the IYONIX's graphics card doesn't natively support any fewe
than 256 colours, which is where Aemulor Pro steps in
16-colour low-res games seemed to run quite happily on my IYONIX, and a
a good speed. If you look at the display manager you will notice that whe
Aemulor Pro is running there are a few more colour modes to choose from. Yes
the desktop can be run in 2, 4, or 16 colour modes too (quite why you'd wan
to is beyond me, but if you have your reasons I'd love to hear them!) although it's noticeabl
slower than running in a natively-supported (256 colours or more) screen mode
Adrian Lees has said that there are plans to increase the speed of the low
colour modes
26-bit TaskWindows
A cool new feature of Aemulor Pro is its ability to open a 26-bi
TaskWindow from which all code executed will be done under Aemulor. Thi
means you can enter a 26-bit-ok incarnation of BASIC for example, in order t
run some programs containing 26-bit-only assembler. It would be nice if th
TaskWindow could be opened on a keypress though, as at the moment it's a
option available only from the iconbar icon - and if you've told Aemulor t
hide its icon then that means running the frontend from the Apps director
beforehand which is a bit of a hassle
Aemulor Pr
also contains a helpful task display similar to RIS
OS' own
Filing Systems
One of the most major new features of Aemulor Pro is the support for 26-bi
filing systems, for example CDROMFS and Win95FS. In the absence of an
updates from Warm Silence Software Aemulo
may turn out to be the only way to keep these important applications working
CDROMFS 1.50 seemed to work well on my Iyonix but the supplied 1.7
version didn't seem quite so happy. It's probably best to try both out; i
1.75 works then you may as well stick with it, but if you have to fall bac
to 1.50 then Warm Silence agree that it's probably not too great a los
(their helpfile suggests exactly the same advice, just not in the context o
Aemulor)
Owners of Psion handhelds such as the Revo and Series 5 may be pleased t
know that PsiF
appears to initialise successfully and attempt to connect. Unfortunatel
this is far as I can report at the moment as I helpfully left my Revo'
docking station almost 100 miles away, but I'm keen to try it out befor
the next issue of RISCWorld
TopModel
The Aemulor team is keen to hear from
anyone who's successfully run TopModel2 under Aemulor Pro
Joysticks
Now that lucky Aemulor Pro-wielding IYONIX users can play all their favourit
games again, the issue of joysticks has arisen. After a brief discussion o
the support SmartGroup Paul Reuvers, man of all things USB, announced that h
is developing USB joystick support for his HID application
No release timescale has been given but if Paul's previous performance i
anything to go by, it won't be too long and it will certainly be worth th
wait
Eye candy
Users of RISC OS 4 will probably notice some apparent omissions in th
configuration panels of RISC OS 5. One of the things I noticed when
first started using my IYONIX was that the desktop looked a bit roughe
than the RISC OS 4 RiscPC's desktop did. Items on the pinboard ha
horrible boxes behind them; the pop-up menus were plain white instead o
textured, etc
All of these were things that could be changed on RISC OS 4 to improv
the appearance of the desktop, but which didn't seem possible on RISC OS 5
But by using a command *WimpVisualFlags all the wonderful eye-cand
of pre-Select RISC OS 4 can be switched on or off to your heart's content
Castle say that the configuration options most likely will make their wa
back into the OS at some point, but until then there is a page of informatio
on how to use th
WimpVisualFlags command
Part of the ethos of RISC OS is the close relationship between the comman
line and the desktop. True to form, there is an application availabl
(courtesy of Bruno D'Arcangeli) which allows each of these visual nicetie
to be switched on or off from a convenient desktop-based control panel. Ge
WimpVF here
WimpVF allow
you to choose which pieces of eye-candy to switch on
What's in a name?
I've had an email from a Mrs Trellis of North Wales, who ask
Dear Mark
Why do you keep on spelling the word IYONIX wrongly
The sticker on the front of my beautiful grey box clearly say
'IYONIX pc' The sticker on the front of my beautiful grey box clearly say
'IYONIX pc' yet your last column was filled with references to
mysterious 'Iyonix'. Please sort this out. Yours sincerely, Mr
Trellis N. Wales
And she does have a point. RISCOS Ltd are keen t
point out that the product they sell is called RISC OS and i
runs on a Risc PC. Clearly spelling is important in the case o
RISC OS as I understand there is another totally separate Unix-based syste
named RiscOS
Well far be it from me to cause offence to Mrs Trellis and whoever a
Castle thought up the name in the first place, but in my introductor
article I did state that it's going to include opinions. And my opinion o
the IYONIX-Iyonix issue is that I prefer Iyonix. When someon
tells me they have a RISC OS IYONIX it looks like they may be hard o
hearing and have to shout or something
But in the interest of correctness I shall try to stick to IYONIX
in future
Mark Rowan iyonix@tamias.co.uk http://www.tamias.co.uk
It's cheap and cheerful, but you give us an earfull...
Dear Aaron,
Thanks for including both my Text->Draw and Q->BBC Basic Converters on your last subscription disc. Talking about spelling checking in DTP applications before converting to Draw, attached is a zipped Impression TextStory to Text Converter (!Story-Txt). The text you can save from Impression is full of control information in curly brackets, which this application strips out. The QBasic to BBC Basic Converter has now gone on a bit to Version 2.00 and is available from the Melotech site at Regards,
Martin Carradus.
It's always a pleasure to publish original software, so I have included a copy of !Story-Txt in the software directory of this issue.
Aaron,
Nice issue, even though there's no education news. That's my excuse, and I'm sticking to it. We're about to buy 50 sets of those speakers Dave recommended, however! Thanks for the tip...
It always makes me grimace when I see digital images of shows that people have taken. OK, so flashes don't tend to reach very far (pants of course - the light gets there and reflects back: just too weakly for the camera's pathetic lens) but we're COMPUTER USERS people! This means we can apply a simple gamma correction in !ChangeFSI or even !Photodesk.
Sounds like something for my education column...
Andrew
Education column...education column...you know I think we used to have one of those in RISCWorld, I wonder when it will be coming back? (Ohh look it's re-appeared in this issue) Anyway I hope you like the speakers, Dave Bradforth seems to like his set. Now back at the digital photos. Firstly the camera I was using doesn't have a flash, it's meant for digital video, not stills. And although it's hard to believe the images were after some correction had been applied, of course if someone would like to write me a nice article on how to gamma correct properly perhaps I won't make the same mistake again...(hint hint).
Aaron,
i'm trying to open the DOSbox archive, but it has an icon which has a green question mark on it and the filetype is &B23. How do i open it? All the other archives are openable except this one.
Matt
It's an X-File archive, which should work on an Iyonix (see my comments about X-Files in the last issues letters page) because we have 32 bitted X-Files for this very reason. I was a bit confused about this and then I got a follow up...
Aaron,
Ignore my email about the dos-box archive, it just suddenly opened and got all the files out, so all ok now.
Matt
Which is even weirder and has me slightly concerned, did anyone else have the same problem, if so did it just fix it itself? If so any ideas how, or indeed why?
And now it's time for our regular start o fa volume I-not-going-to-re-subscribe letter.
Aaron,
Just to let you know I am thinking about not re-subscribing to RISCWorld as I am not getting much out of it anymore:-( I am not going to buy a replacement for my Risc PC as the cost is to high and no support in Australia as well the specification is just not good enough. I may get an upgrade to run the Risc PC on a Windows computer some time in the future, unfortunately my copy of VA5000 will not run on my Toshiba laptop and I cannot justify purchasing a new PC either:-(
Peter Prewett, Coromandel Valley, South Australia
This letter has me a bit stumped, as what you seem to be saying is that you simply aren't going to buy a new computer of any sort, which is odd. If the RiscPC is working fine then it doesn't need to be replaced, so why not carry on using it. It's already paid for, it works, OK it may not be state of the art but does that matter? As for the laptop if it won't run VA5000 then it must be quite old, and due for replacement itself, or there is some software problem that is in the way. Why not e-mail me and let's see if we can get VA5000 going. If you don't want to subscribe to RISCWorld that's OK, but it sounds to me as though you are just giving up on everything, which doesn't ever help anyone, especially yourself.
If you have any comments on this issue, or the RISC OS world in general, then write in, we do want to hear from you. /P
Aaron Timbrell
ÿÿÿÿISSUE1/LUA/INDEX.HTM Issue 1, RISCLua
RISCLua programming exercise
Gavin Wraith on extending Lua with a construct to iterate over the contents of a directory.
It involves only a few lines of code in ARM assembler and C to provide an iterator function dir for Lua so that syntax of the form:
can be used. The report is intended as a small illustration to show how the RISC OS PRMs (Programmer's Reference Manuals), the APCS (ARM Procedure Call Standard) and the Lua/C API (Application Program Interface) can be used together to extend Lua on a RISC OS computer.
Lua was designed to be easy to extend in this sort of way. In fact Programming in Lua, by Roberto Ierusalimschy, ISBN 85-903798-1-7, has an example in the last chapter (29, Managing Resources) of implementing a directory iterator for Unix. But Unix directories are not quite the same as RISC OS ones. Although I had no doubt that compiling the code given in the book, using Unixlib,would provide something that worked, I still felt that that was a long way round. I wanted to work it out for myself from first principles, using no extra baggage. I need hardly say that iterating over a directory is a facility that cannot be already provided in Lua, because Lua is written in ANSI C. The notion of directory is far too platform-dependent to be part of this. Lua is intended to be usable on devices like washing machines or snowmobiles which may not even have filing systems, let alone directories.
Let us start at the bottom, and consult the PRMs to see which bits of RISC OS let us discover the contents of a directory. In volume 2, page 70, we find details of the SWI (SoftWare Interrupt) OS_GBPB,which returns information about a named directory if entered with R0 having the values 9,10,11 or 12. The simplest variant is OS_GBPB 9, so that is the one we will use. This returns information only on the names of the objects in the directory, whereas the others also give further information (size, access permissions, datestamp, filetype, etc). Generalizing what is done here to a fancier construct, say:
Which provides the names and filetypes of all the objects whose names match the wild-carded string leafpattern is only a little more complicated, and can be left as an exercise. I will try to steer the simplest path.
So we enter the SWI with:
R0 =
R1 = pointer to directory name (it will be null-terminated
R2 = pointer to a buffer for the object's nam
R3 = 1 (number of objects to be read
R4 = offset of object to read (0 initially
R5 = length of buffe
R6 = 0 (match all object names
On exit from the SWI, R0,R1,R2,R5 and R6 are preserved. R3 is the number of objects read. R4 is the offset of the next object to read, or -1 if there are no more. If R3 = 1 then the object name read will be a null-terminated string in the buffer pointed at by R2. This tells us what goes on at a low level. We note that R4 is a sort of iteration variable. The PRMs do not tell us what the values of R4 are, and we do not need to know, apart from the fact that we start the loop with R4 = 0 and, if it terminates without error, it must terminate with R4 = -1.
We must now use the Objasm assembler to convert this information into a C function. The APCS says (I oversimplify) that C functions are realized by ARM subroutines, with the first four arguments to the function held in the registers R0,R1,R2 and R3 and the remaining arguments on a full descending stack pointed to by R13. The returned value is held in R0. The return address is held in R14. We will name the C function rdir.
The idea is that rdir will return the new offset. The assembler code for this does most of its work shuffling register values. We write this in a file s.sys containing:
; s.sys
AREA RDIR,CODE
EXPORT rdir
rdir
STMFD sp!,{R1-R6,R14}
MOV R6,#0 ; no pattern to match
MOV R5,R2 ; size of buffer
MOV R4,R3 ; offset
MOV R3,#1 ; number of objects to read
MOV R2,R1 ; buffer
MOV R1,R0 ; directory name
MOV R0,#9
SWI &2000C ; XOS_GBPB - error returning SWI
MOVVS R3,#0 ; in case of error state none read
CMP R3,#1 ; anything read?
MOVEQ R0,R4 ; if yes return offset
MVNNE R0,#0 ; if no return -1
LDMFD sp!,{R1-R6,pc}
END
The Objasm assembler will convert s.sys into an AOF (Acorn Object Format) file o.sys. The linker does not care how AOF files have been created, whether compiled from C or assembled with Objasm. However, to be referenced by C code our rdir subroutine has to be dressed in respectable C clothes - that is, given a prototype declaration.
We create a header file h.rdir containing rdir's prototype declaration.
/* rdir.h */
extern int rdir(const char *dir, const char *buf, int buflen, int offset);
Note that this function has just four arguments, which the APCS tells us will be the contents of registers R0-R3 when the subroutine rdir is entered. To see how this function is to be used to implement a directory iterator in Lua, we have to alter our perspective for a moment and look at Lua's very general notion of for-loop. This is detailed in section 2 of chapter 7 of the book, under the title The Semantics of the Generic for , which I paraphrase here in a simplified form that is adequate to our special case.
In general, a construction like:
in Lua is equivalent to
We call f the iterator function, s the invariant state and i the control variable. The loop is terminated when the control variable becomes nil.
In our case there is only one variable () given by the object name, and exprlist consists of the single item . The invariant state can be taken to be nil and the initial value of the control variable can also be taken to be nil ; subsequently it is the object name. So the function dir must return just the iterator function. In our case case the iterator function will be realized as a C function that returns the object name, or nil if there are no more objects. It will produce its result using internal state provided by dirname and the mysterious offset value used and returned by rdir.
In Lua, functions are first-class citizens. That is, they can be assigned to variables just like other sorts of values. In C and Basic, functions cannot be assigned to variables. There, they are indissolubly wedded to one name, which they get when they are defined, and which are part of their definition. The Lua bulletin boards are full of messages from veterans of C and Basic who ask questions like when I am debugging how do I find out the name of the function I am in? This makes no sense, because functions in Lua do not necessarily have a name. It is like asking, if I have a value of 77 how do I find out the name of the variable that is storing it?
Lua has lexical scoping. This means that a local variable is visible only within the block in which it is defined, and its subblocks, and after its declaration as a local variable. Local variables can hold function values, of course. So what happens if such a local function value is returned as a result from the body of an enclosing function? What happens to the values of local variables defined in that enclosing function that happen to be used in the returned function? Consider, for example:
The value returned by fred is a function that depends on the local variable y which is not an explicit parameter, like z. The Lua terminology is that y is an upvalue of the function returned by fred. It depends, of course, on the actual invocation of fred that is used. What is returned by fred is not simply a function but a closure, the word used in computer science to mean the combination of function together with an environment (i.e. list of bindings) that interprets the function's upvalues - the variables it uses that are defined in an enclosing scope. If you are familiar with a functional programming language this notion will not be strange.
To return to our directory iteration, what dir must do is return a closure consisting of the iterator function together with an environment for the directory name and for the offset variable, which the iterator function must update each time it is used. In C, because you cannot have local functions, you cannot really talk about upvalues. However, you can mimic them using static variables. These are variables whose scope is limited to the file in which they are defined. We need to define two C functions: one to provide the dir function in Lua, which we will call rdir_read and another to provide the iterator which we will call rdir_iter. We also need a static variable rdir_buf to provide the buffer to hold the results after the call to XOS_GBPB 9 in the function rdir. It will be defined by:
static const char rdir_buf[128];
I am presuming that 128 characters is sufficient for leaf names. All C functions that define functions in Lua take as a single argument a pointer to the Lua state and return an integer denoting the number of arguments the corresponding Lua function returns. So we will have a prototype declaration:
static int rdir_iter (lua_State *L);
Here is the C source in c.rdir.
/* rdir.c */
#include "lauxlib.h"
#include "lualib.h"
#include "rdir.h"
static int rdir_iter (lua_State *L);
static const char rdir_buf[128];
int rdir_read (lua_State *L) {
lua_pushnumber(L,0);
lua_pushstring(L,lua_tostring(L,1));
lua_pushcclosure(L,&rdir_iter,2);
return 1;
}
static int rdir_iter (lua_State *L) {
int offset = (int) lua_tonumber(L,lua_upvalueindex(1));
Note that rdir_read was not declared as static. That is so that it is accessible elsewhere to be declared as code for the function dir. This function pushes an initial value of 0 for the offset onto the Lua stack, reads the dirname argument (lua_tostring(L,1)) and pushes that and finally pushes a pointer to rdir_iter and declares that these three items form a closure (lua_pushcclosure).
The rdir_iter function gets the upvalues offset and dirname and calls our low-level function rdir using them, and rdir_buf, as arguments. If it gets a value of -1 then it pushes a nil onto the stack otherwise it pushes the new offset and then pulls it off again with lua_replace to update the upvalue and finally pushes the object name in rdir_buf.
Bar a line or two of book-keeping for registering the new function and for amendments to the makefile to take account of o.sys and o.rdir, that is it. The reason that I have not included these details here is that in a real-life situation one hardly ever extends by a single function. One usually extends by a whole library of functions. In the case of dir , for example, it would be sensible to include also functions to return the filetype of a file, and other properties. It is the convention in Lua to implement such libraries as tables, and I wanted to avoid getting into this topic.
An important aspect of the code presented here is that it lets us iterate over huge directories without incurring any storage penalties, so long as we use sensible code in the body of the loop. This is in contrast to the technique of doing all the calls to XOS_GBPB 9 at once to build up a table of the directory's contents. Big directories will mean a big table, and that might not be appropriate. This way at least gives you the option of parsimony.
I doubt whether I would have been able to implement this little project if I had not got the book to explain what was behind the definitions in the Lua reference manual. You might say that it was an exercise to help my understanding of the book. I was astonished at how little coding was required, in fact. I have written this up to try and give heart to those who think that they too might attempt something similar, whether they be RISC OS programmers who know about C and ARM assembler but not about Lua, or those who know Lua but nothing about RISC OS.
Gavin Wraith
ÿÿÿÿISSUE1/NEWS/INDEX.HTM Issue 1, News
News
The latest big news from the RISC OS world
With the Wakefield show looming on the horizon there have been no shortage of press releases, so we have cherry picked the ones we think will be of most interest to our readers. You can see all of them, along with the last 2 months comp.sys.acorn newsnet postings, in the NewsNet archive on this issues CD.
R-Comp
GrapeVine2
We are pleased to announce that after around six months (maybe a little more!) of full-time development, Grapevine 2 is finally ready, and available now
What is Grapevine?
Grapevine allows you to communicate online with friends, family members, colleagues and so on. Not only can you have conversations with them online, but you can send/receive files, link out to websites/email etc. Grapevine uses industry standard protocols, meaning that your friends can be using other types of computer (eg. Windows or Mac).
These methods of communication tend to be fragmented, with some people using one service, some people using another and so on. Grapevine draws several of these protocols into one application, making life for RISC OS users easier. Grapevine 2 supports IRC communication, MSN instant messaging and ICQ.
Introducing Grapevine 2
Grapevine 2 is a major new release, expanding and extending the softwar
in almost every area. The single biggest new feature is support fo
ICQ communication, in much the same way as the existing MSN mode. Thi
means than GV2 can deal with IRC communication, MSN instant messaging an
ICQ all in one program.
However, there's a lot more to GV2 than just ICQ. All the other functionality been expanded. For example, file transfers in MSN and IRC have bee
Paul Brett with the latest freeware and PD releases for RISC OS.
It seems that RISC OS software authors have been pulling out all the stops over the last couple of months to update a wide range of their software. Which is very encouraging for the RISC OS market as a whole. So what delights do we have for our readers this issue?
IPPDevice Driver - Dave Lambley
This is a simple module to allow you to print from RISC OS directly to an IPP (Internet Printing Protocol) printer server over a network. IPP is a relatively new Internet standard. It is supported by:
The CUPS server (for UNIX
Windows 200
Some networked printer
CUPS will probably be the one of interest here. CUPS is a printer server that runs under UNIX. It is capable of driving a wide range of printers, both connected to the server directly and over a network. By using this module, a UNIX server running CUPS and the RISC OS PostScript Printer Drivers, you can suddenly use a huge range of high-quality printer drivers.
This module probably doesn't work on the Iyonix yet, but it should work on any other RISC OS with a working TCP/IP stack.
KClock - Kevin Wells
It's a simple desktop clock in a window, handy for those that don't like cluttering up their icon bar with the long Alarm icon. KClock was written using DrWimp and is a good example of how a small application can be quickly generated in BASIC.
KClock
MakeAlias - Malcolm Ripley
Makealias is an application that will create aliases of files, folders and applications. You may have seen the idea of alias's under Windows, where you can have a "Shortcut to" an application or a file, MakeAlias offers the same for RISC OS. It does this by creating an application with a name equal to "!=" plus the original. In the case of applications the "!" is replaced with a "!=". If an alternate name is used then the alias will be prefixed with "!+" instead of "!=".
There are 3 ways to create an alias:
Drag a file, directory or application to the Alias Icon on the Icon bar, drag the icon from the window to the required locatio
Open up the create alias window from the icon bar menu, drag a file, directory or application to the window, drag the file icon from the window to the required locatio
Open up the create alias window by clicking on the iconbar icon and then drag a file, directory or application to the window, drag the file icon from the window to the required locatio
Make Alias
Nettle - Nettle Developers
Nettle is the terminal emulator and telnet client for RISC OS. It uses the ZapRedraw module for speedy display and is a fast, clean native implementation. Nettle supports most common terminal types, including vt100, vt102, vt220 and xterm terminal emulation in full colour, along with some more exotic features which you might not expect from a terminal emulation program, such as URL launching - just double click on any URL that is displayed in a Nettle window and it will launch in to your browser. Nettle also has an ANSI Task task window feature, which allows unix programs such as ssh, lynx, BitchX, ncftp2 and nano with ANSI terminal interfaces to be run natively on RISC OS for the first time.
Nettle is still under development with work being actively carried out by five developers. Alex Macfarlane Smith started the project, initially writing a very well featured version of Nettle in BBC BASIC. Unfortunately, this was rather too slow to be really useful, so after some encouragement, the move was made to a C-language based development. This is when the other developers started work. Nettle is built with the StubsG C libraries, to allow it to run unmodified on both 26bit and 32bit RISC OS variants. Development is mostly done on the latest release of RISC OS Select but we support everything from RISC OS 3.1 through to RISC OS 5 running Internet module version 4.xx or 5.xx. Nettle is also supported and tested with VirtualRPC-SE. If you're not running Select 2,3 or Adjust then you'll also need the SocketWatch module.
Nettle
PowerBase - Derek Haslam
We have covered PowerBase extensively in RISCWorld in the past (and again in this issue), but this is the updated version 9.20 which exists in two functionally identical variants. v.9.20DA is suitable for RISC OS 3.5 or later. v.9.20SH is suitable for all versions of RISC OS from 3.1 onward.
The difference between the two lies only in the way in which they manage their memory requirements. 9.20DA makes extensive use of dynamic areas, a practice now deprecated in some quarters. Nevertheless, this is the version I recommend to all users of RiscPC, A7000, Iyonix etc. 9.20SH uses instead the sliding-heap module (as have all versions of Powerbase prior to 9.00) but this module has now been made 32-bit compatible by Christopher and Harriet Bazley.
There have been several enhancements since the last version. Indexes are used much more extensively to speed up report creation. This feature can in many instances make use of multiple indexes and operate on multiple targets in search formulae. In earlier versions of Powerbase this feature had severe limitations. Search formulae can query data in any column of a validation table provided the table is linked to a field which appears in the search formula. (It was always possible to include any or all columns of a table in the print selection, but querying has not previously been possible. The manual (in all formats) has been updated to comply with v.9.20
The tutorials now include important actions such as creating and reformatting a database and re-definition of the primary key. Both manual and tutorials are available in Impression Publisher, Ovation Pro and PDF formats. The tutorials are also available as a plain text file with supporting drawfiles.
For anyone with some experience of programming in BASIC it is fairly easy to add non-standard features to Powerbase and to place on the tool-pane, keypad or record window special buttons to control these features. This facility has been present in Powerbase for several years (in fact it has been in regular use in one database application for about seven years) but has not hitherto been described.
PowerBase
SpecialFX - David Pilling and Richard Hallas
SpecialFX is a desktop enhancement module which provides three basic functions:
SpecialFX causes calls to the Draw module to be redirected to Computer Concepts' GDraw module, thus providing an anti-aliased display in applications that make use of vector graphics (such as Draw, Draw Plus, Ovation Pro etc). Anti-aliasing is applied only to screen output; the Draw module continues to be used for printing. This option is enabled for all applications by default
SpecialFX causes outline font painting operations to be performed with background blending (a feature introduced in the RISC OS 3.7 font manager) in applications which do not provide support for this feature (such as the Impression family of DTP programs). Background blending is applied to screen plotting only; printing is not affected. This option is enabled for all applications by default (though it will only work on machines running RISC OS 3.7 or later)
SpecialFX can cause all printing to occur from low memory in applications which use dynamic areas. This provides a work-around for a problem in certain printer drivers, such as those for Calligraph direct drive laser printers, which do not work correctly with particular applications. If you find that some items vanish when printing (particularly text embedded within Draw files), enabling SpecialFX's low-memory printing feature should cure the bug. Low-memory printing applies to printing operations only, and does not affect screen output. This option is disabled for all applications by default. Enabling it globally should not have any adverse effects, even with printers that do not suffer from the bug
Setting up SpecialFX
StopCaps - Dan Ellis
This is a very handy little module that can be put in your predesk directory, it serves one simple purpose, it stops the CapsLock key working unless the ALT key is also held down. This prevents users accidentally hitting the CapsLock key instead of the Shift key and then typing 3 lines of capitals before noticing.
Signing off
I will see you again in July for the next issue of RISCWorld.
Paul Brett
ÿÿÿÿISSUE1/POWERBASE/INDEX.HTM Issue 1, PowerBase
PowerBase
Derek Haslam introduces the latest changes to Powerbase.
Powerbase 9.20DA is the latest version of what was first introduced in March 2002 under the provisional name PbaseDA. It is compatible with all versions of RISC OS from 3.5 to 4.37 Since it uses dynamic areas it will not work with RISC OS 3.1 - but v.9.20SH will. The two versions are functionally identical and have many features which are not present in earlier versions and these differences are described on this page. All new topics are described in the latest version of the User Manual which has been completely updated to cover these features. The new manual, together with an expanded version of the Tutorials manual, is available for download in Impression Publisher, Ovation Pro, PDF and HTML formats.
The following descriptions of new features are extracted from the latest version of the user manual.
Altering the record format
Version 9.20 of Powerbase introduces far-reaching changes in the way the record format is edited. Earlier versions caused confusion in the minds of many users by having two choices on the Utilities submenu which did similar things. Adjust format enabled minor changes such as moving fields about in the window, renaming fields and the addition or removal of External, Button, and Scrolling list fields. New record format was needed in order to make any change which required the Database file to be rebuilt, i.e. addition or removal of fields (other than those mentioned above), changing the length of fields, and swapping or renumbering fields. Users no longer need to decide whether an alteration will require a rebuild of the Database file since Powerbase can now make such a decision by itself. The two choices have therefore been replaced by a single menu choice: Alter format.
The process has been improved in other ways too. After changing the structure using older versions it was often found that self-calculating fields no longer worked until their formulae had been re-entered. Users were warned against changing both the tag and number of a field (otherwise data could end up in the wrong field). Sometimes indexes needed rebuilding. Under v.9.20 these annoyances should not occur. Close attention has been paid to providing the means to undo format alterations and revert to the database as it was before the changes were made (although common prudence suggests that you should always keep a backup copy of any database on an alternative medium such as another hard drive, a floppy disc or a CD ROM).
The best way to acquaint yourself with the way things work is to experiment. Suppose we have a database called !Addresses. When you choose Alter format from the iconbar Utilities submenu the following things happen
An ordinary directory called Addresses! is created (unless one exists already). This unusual naming convention avoids possible clashes with any pre-existing directory or file called Addresses. The new directory is created in the same directory as the database !Addresses
An application directory called !Undo01 is created inside Addresses! This initially contains a !Run file and a copy of the Form file from !Addresses. If the database uses validation tables there will also be a copy of the Link file. If Computed fields (or certain other specialised types) are involved then the Calc file is copied too. Many simple databases do not have either a Link or a Calc file. Other objects may be added later
The record window is displayed in "design" mode with the blue layout grid
A message explains what to do next and informs you that the originals of any altered files will be placed in !Undo01
You can now go ahead and make changes ad libitum. Rename field tags if you wish, add new fields (including ones inserted before the last-numbered one in the record), delete redundant fields, lengthen or shorten fields, increase or reduce the number of columns (and the widths of columns) in Scrollable lists etc. etc. When you have finished gleefully messing up the previous record structure, bring up the main menu and choose Quit design.
During the foregoing activity Powerbase will have been keeping track of certain things which it needs to know so that the changes can, if necessary, be undone and it will now inform you of changes which might result in the modified database containing less data that the original. Deleted fields are an obvious example, but you will also be warned about shortened fields and Scrollable lists with fewer or narrower columns than in the original. If you choose to proceed despite these warnings the restructuring will take place and you should end up with exactly what you asked for but the !Undo01 directory will now contain copies of any files which have been changed by the reformatting. The addition to !Undo01 which you will most commonly see is a copy of your original Database file, but there might also be copies of the Indexes directory or of directories holding External field and Scrollable list data.
One file which definitely will be there is an Obey file called !Restore. You might like to look at this very important file, which contains the instructions for putting everything back as it was.
Wish you’d left well alone? Want to go back? Just double-click on !Undo01. All your renamings will be reversed and all the saved original files copied back. The restored database, which should look exactly as it did when you started, is then re-opened for you and !Undo01 finally deletes itself!
Why is the "undo" application called !Undo01, not simply !Undo? You will see why if you start another session of alterations beginning where you previously left off, that is by again choosing Alter format without having run !Undo01 which is still sitting there in the Addresses! directory. A new application directory called !Undo02 is created. A third alteration session will result in !Undo03 and so on. This allows you to change your databases a little at a time, assessing the effect of each alteration before proceeding to the next. The most recent alteration session is undone by running the highest-numbered undo application, the penultimate session is undone by running the next-highest etc. If, after a lengthy series of alterations, you want to go right back to the beginning you should run the undo applications in reverse order. Do not simply run !Undo01 because it only "knows" about what you did in the first session and the database structure might by now be very different.
How many undo applications can you have? This depends on the configured maximum for auto-generated filenames. The value will be found in the Config file beside the token MaxNames and the default is 10. After !Undo10 you will be informed that this is the highest-numbered name and subsequent sessions will use (and keep overwriting) !Undo. Deleting some or all of the existing undo applications (starting with the highest-numbered) allows auto-name-generation to resume.
Subsidiary indexes and printing speed
In many cases Powerbase can make use of subsidiary indexes to make reports complete much more quickly. This feature has existed for a long time but was, prior to v.9.20, very restricted. It has now been greatly extended and requires a detailed explanation. You might first like to try the following simple exercise with the Elements database.
Create an index on the Group (GP) field, select the element name only, and create a report using the search formula:
GP=T
If you do this first with the Indexes button on the Query panel selected (default), then with it deselected, you will notice a difference between the times taken. Use ADJUST, not SELECT to click the Print button on the Match window so that the window remains open and you can see the actual times. On a StrongArm RiscPC the above test takes about 0.25 sec with Indexes selected and about twice as long with it deselected.
This might not sound like a difference worth bothering about, but remember that Elements is a very small database; you are printing 31 elements out of only 103. If you were targeting a similar number in a database containing thousands of records the difference would be very marked indeed; a factor of 10 is common and a factor of 50 or more might be achieved in some instances.
Here’s what happens in that example. Powerbase recognizes that GP is indexed so, instead of going through all the records, it jumps straight to the first occurrence of "T" in the subsidiary index and prints records sequentially until the key is no longer "T". There is one small disadvantage which becomes obvious if you try something like GP=1,2,3 which is equivalent to GP=1 OR GP=2 OR GP=3. The names aren’t all in alphabetical order, which they will be if you repeat the exercise with Indexes deselected. The group 1 elements are found first and duly listed in alphabetical order (caesium to sodium). Group 2 element (barium to strontium) then follow and, finally, group 3 elements (aluminum to thallium). You can, of course, click MENU over the list and sort the names so it’s not much of a disadvantage, but attention is drawn to this point because there may be situations where you want to avoid it by deselecting Indexes
Indexes can not be used in the way described when
a hyphen is used to specify a set of contiguous fields (tagX-tagY=target
the comparator between tag and target is anything other than =, >, >=, <, <=. You can’t use {, }{ or <>
the contents of validation tables are being interrogated (see 5.9
search elements linked by OR involve a non-indexed field. (It makes no difference whether the OR is explicitly stated or implied, i.e. by using a comma-separated list of field tags.
If any of the above situations arises Powerbase will refuse to use the speed-up methods even though Indexes remains selected. You can always tell when the feature is active because the numbers of the indexes used appear briefly in the small square to the right of the writable icon in the Query panel. If no number appears then the entire database is being scanned.
To clarify the last case (above), consider two fields, F1 and F2, both of which are indexed, the indexes being numbered 1 and 2 respectively. The search formula:
F1=wibble OR F2=wibble
will first search index 1 for all occurrences of "wibble" in F1, then search index 2 for all occurrences in F2. If F2 is not indexed Powerbase has to search the whole database for occurrences of "wibble" in that field, so the use of an index for the other field is of no help at all. No such problem would occur if the search formula were:
F1=wibble AND F2=wibble
because all records in which F2 is matched must also be ones in which F1 is matched, so index 1 would be used.
For indexes to be used as described they must meet the following criteria
If the index uses a multi-part key the field being tested must provide the first part
The characters used in the key must come from the first word of the field
The characters must come from the left of the word
You might sometimes see 0 appear in the index-number icon, indicating that the primary key index itself is being used in this special way. This will happen if the field being targeted is a primary key field which meets the above criteria.
Testing validation table contents in search formulae
v.9.20 supports an extension to the search formula syntax which enables tests on validated fields to operate on table columns other than the one linked to the field. The following, trivial example will help to clarify the concept. In the Elements database the field GP is linked to column 0 of a validation table called Group. Column 1 of this table holds the names of the periodic groups, e.g. "Halogen" for group 7. Consider the search formula:
GP/1=Halogen
The "/1" suffix to GP tells Powerbase not to test the actual value present in GP but, instead, to find that value in the linked column (column 0) of the table and look at whatever is on the same row in column 1 to see if it matches the string "Halogen".
A report produced using the above formula would contain exactly the same records as one produced simply with GP=7 because there's a straightforward one-to-one relationship between the two columns; neither contains any duplicated entries. That's why the example is trivial. For a non-trivial use consider a database of classical music in which we have fields COMP and WORK which hold the composer's name and the work's title for each record. Suppose COMP is linked to column 0 of a validation table which has three additional columns containing Nationality, and Birth and Death dates for each composer. Each of columns 1-3 would contain entries repeated several times - probably many times in the case of Nationality. Can we find out quickly which works (if any) were written by French composers born in 1880? Yes, by using the formula:
COMP/1=France AND COMP/2=1880
And which composers have a centenary or bicentenary in 2004?
COMP/2,COMP/3=1804,1904
which will, admittedly, list every work by composers who were born, or died, in 1804 or 1904 so the same composer might make many appearances in the report. Does it really matter?
Currency fields
Previous versions of Powerbase had no convenient way of specifying currency units. Provided no calculation on a field was required you could, of course, use an Unrestricted type and include the £, $ or ¤ (Euro) symbol within the field. Most currency fields do participate in calculations, however, and must therefore be defined as Numeric (fixed point, 2 places). The only option then was to place the currency symbol in the descriptor, which isn't very satisfactory since it won't appear in reports.
v.9.20 handles this by providing radio buttons which may be selected to prefix the number in a fixed point field with the required currency symbol. Calculations on such fields work correctly and, since the currency symbol is part of the field content, it appears in reports.
New field types
Two new field types, Capitalise first and Capitalise each have been added to the Editable class. The first of these simply forces the initial letter of the field to uppercase and the remainder to lowercase. The second is perhaps more useful. Left to itself it forces the initial letter of each word in the field to uppercase. This might not be quite what you want; in titles etc. it is usual to capitalise each word with the exception of relatively insignificant words such as definite and indefinite articles, conjunctions, prepositions etc. This is taken care of by means of a comma-separated list, e.g. "the,a,an,of,to,for" which is held in a text file called CaseExcept and placed in the database directory.
Even with a CaseExcept file you will occasionally encounter words which you want to be left "as is". This can be achieved by preceding them with a hard space (Alt-space, character 160).
ProArtisan has a history that's nearly as old as Acorn's 32-bit platform itself, and it actually predates RISC OS. Long-term RISC OS users might enjoy a brief wallow in nostalgia, so let's start off with a short history lesson.
Art history
The original version of the package, Clares' Artisan, was one of the earliest commercial Archimedes applications, dating from 1987 and running under the Arthur operating system. This original package, which cost £40, was a full-screen mode 12 painting package. In other words, it could only cope with sixteen colours in a TV-style (tall pixels) 640×256-resolution screen mode: a fact that brings home the extent to which computer graphics have progressed in only a relatively few years.
ProArtisan arrived less than a year later; its main justification for the 'Pro' prefix was the fact that it worked in 256 colours (but still at the same resolution). The price was 'Pro', too: a wallet-busting (certainly for the time) £170!
Artisan 2 (not 'Pro', so back to 16 colours) ran under RISC OS, but still in full-screen mode, and arrived in late 1989 at a price of £60. It wasn't until 1994 that the next major version, ProArtisan 2 (£135), came along and used the RISC OS desktop 'properly', with the ability to create multiple arbitrarily-sized pictures and edit them in windows. The rise of CD-ROM and the arrival of the Kodak PhotoCD format led to the production of a special edition later in the year, ProArtisan 2 CD (£160), with specific added support for PhotoCD discs.
It was the arrival of the Risc PC, with its superior video hardware, later in 1994 that allowed ProArtisan to become what it was destined to be: a true-colour painting and image-processing package. The appearance of the new machine led to a sudden explosion of art packages (Photodesk, DA's Picture, ProArtisan 24, Studio 24 and Revelation imagePro 24 to name but five), so ProArtisan 24 (£170) faced some stiff competition. Nevertheless, it held its own and was always well regarded, if not considered the best of the bunch.
After that, development of ProArtisan took a long rest. There were a few minor updates, including a StrongARM compatibility release, but that was the end of significant development until the package's recent acquisition by ProAction and APDL. Following some extra work, a new version of ProArtisan 24 was released a few weeks ago which is 32-bit neutral and hence compatible with the Iyonix. So, once again, ProArtisan runs on the latest RISC OS hardware and, to prove the point, this review has been written on an Iyonix, running ProArtisan 24 natively.
A tour of the gallery
This latest edition of ProArtisan 24 comes on a single CD rather than the multiple floppies of its predecessor, but existing stocks of the original Clares packaging are being used, so you still get the nice glossy box and commercially printed manual: a fact that makes the new asking-price of just £39 (fully inclusive in the UK; overseas add £2 P&P) particularly good value. The latest version of the software runs on all modern machines, of course (StrongARM RISC OS 4, XScale RISC OS 5 and VirtualAcorn emulators), so potential buyers can think in terms of getting the package, as new, for a £130 discount compared with its price ten years ago!
It is hoped that the package will continue to be developed, too; certainly there is talk of supporting the PNG graphics format and adding further new features. For the moment, though, the current release (I have been testing version 1.20; Clares' last release was 1.10) is functionally identical to its predecessor; the main raison d'être for the present release is to bring the package to Iyonix users in native format. Note that upgrades are available from previous versions (£29 from the Clares version, £12 from APDL/ProAction's previous CD-based re-release of the original).
In other words, if you have ProArtisan 24 already, you should know all about the features I'm going to discuss, so you may wish to skip down to the
PhotoCD
Let's get perhaps the most obscure feature out of the way first. As mentioned briefly in the history lesson, ProArtisan is one of the few packages for RISC OS with specific support for PhotoCD discs. PhotoCD looked as though it was going to be an important format in the mid-90s, and it was quite an interesting idea at the time: store your photos on a CD at multiple resolutions for each picture, and either use them on a computer or view them via a special player on your TV. Unfortunately no-one could have foreseen the imminent arrival and massive take-up of digital cameras only a couple of years later. PhotoCDs were quite time-consuming and fairly expensive to produce, and the fact that a special player was needed to view the discs on a TV helped to ensure that only the keenest amateur photographers bothered with PhotoCDs. The format never took off, and with today's computers and digital cameras it's actually much easier to home-produce photographic CDs of a much better quality, and containing far more pictures, than PhotoCD could ever offer.
But there we are; that's progress. Hindsight is a wonderful thing, and the fact that Clares invested effort in supporting what looked like it was going to be an important and interesting format was commendable at the time. As it stands, those of us who actually dabbled with the PhotoCD format have a reason to buy ProArtisan, as it makes our discs more easily accessible on our new Iyonix machines.
I speak from experience: I have just one PhotoCD, a disc that I compiled from a holiday abroad in 1994, and I felt pleased with it at the time, though looking at it again I'm struck by how poor quality Kodak's own scans appear to be; had I taken the pictures with the digital camera I have today, they'd have been much better quality. But that's beside the point...
ProArtisan offers three items on its icon bar menu for dealing with PhotoCDs: Show CD Album, PhotoCD Info and Eject CD. In a sense, perhaps the most interesting of these is the info window, as it displays information about the disc which is not easily available via other sources. The album window shows the pictures on the disc in groups of ten at a time, and you can page between them and then double-click one to load it.
Browsing a PhotoCD album
PhotoCD images are stored in multiple resolutions, and you can choose which size to load, as well as optionally cropping an area from the picture at load-time, which is a useful feature. The two smallest standard image resolutions are not offered, but that's no loss as they're too small to be generally useful.
The PhotoCD Album window is a nice idea, but perhaps not entirely to my taste. On the one hand it allows you to browse a PhotoCD's contents quickly and easily and gives direct access to individual pictures. But on the other hand I wasn't too keen on the need to view only ten thumbnails at a time; all that flicking between pages seemed rather fiddly on a fast machine with a big monitor, and is probably an example of how a software design decision was influenced by the technology of the time (1994) and is less well justified today. I would have liked to be able to view more pictures at once in a larger window. I also didn't care for the fact that the album closes whenever you load a picture, so if you want to load more than one, you must go back to the menu to reopen the album.
I did encounter a couple of bugs in this area of the software; the sorts of things that suggest (not too surprisingly) that this aspect of the program has not undergone much testing. For instance, whenever the PhotoCD info window is opened, ProArtisan feels the need to say "AARGH" in an error window which you then have to close, though there are no ill-effects and the feature works perfectly. There were other minor points, but hopefully they will be fixed in the next update.
Overall I have to admit that I prefer Photodesk's handling of PhotoCDs: Photodesk opens a 10×10 index page of all the images to let you view them all at once, and you just double-click the one(s) you want to load. But ProArtisan handles PhotoCDs in a reasonably helpful and useful way at a much lower budget, so if you happen to be a sometime PhotoCD buff, it's a useful application to have for this feature alone.
Painting by numbers
ProArtisan is primarily a painting package: it was originally designed for the creation of original artwork, and although it has grown to cover image processing and photo retouching as well, artistic creation remains one of its primary purposes.
Many types of image can be imported (actually, ChangeFSI is used to handle the conversions), but ProArtisan works primarily with sprites. They can be of any reasonable size, and there is specific support for another old Clares package, Virtualise, to give access to virtual memory. Unfortunately, Virtualise is not available for the Iyonix; though given the amount of memory available to Iyonix users, this is much less of a concern than it would be to Risc PC owners.
ProArtisan is very much a 'modal' program: it has a small toolbox that attaches to the current window, and this offers Painting, Drawing, Sprites, Input-Output, Process, Palette and Frisket buttons, plus a few other controls (zoom, single-stage undo and external utilities). The most important of those buttons (Painting, Drawing, Sprites, I/O, Process and Frisket) all have their own individual menus, so ProArtisan is rather unlike other RISC OS applications because its main window menu changes completely depending on the tool you're using at present.
In Painting mode you have access to quite a wide range of styles: watercolour, airbrush, chalk, charcoal and so on. These are all chosen from the menu, as are several other more esoteric styles like a rainbow mode for the chalk (which cycles through all the shades in the current palette) and a texture mode that allows you to paint with sixteen different textures.
There are other special options on the menu too: cloning allows you either to paint a copy of part of the current image or a sprite from the program's sprite pool (in various ways), and there's an FX brush which allows a range of image processing filters to be applied with the brush. A handy undo brush also allows you to 'unpaint' the last action.
All of these styles are painted with a single brush, whose attributes (size of solid centre and graded/colour opacity) can be set via a single dialogue window. Each style can have its own set of brush attributes (e.g. the watercolour brush and airbrush can use different settings which will be remembered as you switch between them), but they're all set via the same dialogue.
Drawing a pitcher?
The Drawing mode gives access to the usual range of vector shapes: lines, curves, rectangles, ellipses and outline font text (just as in Draw), plus regular polygons (which you don't get in Draw). These can have the usual range of styles applied to them (filled or not, stroked or not, and with round, square or bevelled joins). Alternatively, though, you can paint vector shapes using the brush styles from Painting mode. Placing shapes works much as it does in Draw, and there's even a pixel-based grid that you can snap shapes to if you wish. The difference is, of course, that once a vector path is fixed and rendered to the canvas, it ceases to be editable.
Undoubtedly the most powerful facility available to the Drawing mode, though, is the Path dialogue window. This provides a pool of drawn paths: for instance, each time you create a new line of text, it is automatically added to the path pool. However, you can add new objects to the pool directly yourself, including complete Draw files, not just single objects. These can then be rotated and scaled as you wish before being committed to the canvas in whatever rendering style you want to use, and because the paths remain present in the pool, you can use them multiple times.
The next illustration shows a few of the things discussed so far: painting in the rainbow chalk style, but using the same vector path several times (with different palette settings). The vector path was created automatically simply by entering a piece of text (once).
This example shows how a single vector path, created by entering text in Drawing mode, can be used to produce different effects with brushes (here, the rainbow chalk brush) from Painting mode
A dip in the sprite pool
Just as there is a path pool that stores vector paths, ProArtisan provides a sprite pool; indeed, there's a tool devoted to it (Sprites mode). You can cut sprites out of a picture either by drawing a rectangle around the area you want, tracing an area freehand, or using a magic wand tool. The latter has adjustable thresholds and tries to extract the piece of image you click in a sensible manner. Once you have a sprite in the pool, you can use it as a brush, fill an area with it or apply it to the canvas in a distorted shape, perhaps to achieve a perspective effect. Sprites can also be rotated and scaled, and plotted around a sphere (tiled if necessary). As with the paths pool, the sprite pool can hold many images and they can be manipulated in various ways before placing them on the canvas. Numerous ways of pasting sprites onto the canvas are provided, from simple solid and translucent pasting to fades and feathering.
A colourful background
A mention must be made of ProArtisan's colour picker, as it's somewhat unusual and hints at the program's origins as a 256-colour art package.
In some ways, ProArtisan's colour picker can be thought of as a 'palette pool', in the same sort of class as the path and sprite pools. The point is that, although it's a full 24-bit-colour painting package, ProArtisan organises its colours into palettes of 256 colours each. There are 32 palettes by default, though plenty more are provided on disc and you can modify palettes very easily.
The palette-mixing facilities provided by the Colours window are actually very powerful. Any of the 256 shades can be defined directly by using the standard RISC OS colour picker, but dragging between two colours will instantly create a blend, and colours can be reordered by dragging, so creating smooth blends between any number of colours is a quick and easy matter. Sixteen tints of the currently selected colour are also shown in the window, as well as five further complementary shades from around the colour wheel. These are all excellent facilities for artistic work, and make it genuinely easy for a creative artist to get at just the colours he might want with minimum fuss, so the picker strikes me as one of the best-thought-out aspects of ProArtisan 24.
It's perhaps just a bit of a shame that only 32 palette slots are available: you can redefine any palette at any time, or replace a palette by loading a new one from disc, but you can't have more than 32 available at once. It's also a great pity that individual palettes can't be saved easily; you can save your palettes to disc, but only all at once, not individually. I can see no good reason why there isn't a 'save current palette' option, and I think that this would be a highly desirable feature for a future upgrade. As things stand, 32 palettes are defined by default but you have to replace existing ones (and save new defaults) if you want to use your own, whereas ideally you should be able to have extra palettes in addition to the existing presets.
ProArtisan's Colours window
Frisket him, officer
So much for painting and drawing; one of the most important options in any bitmap graphics package is its ability to use a mask.
ProArtisan calls its mask a frisket. It's an 8-bit mask, which means that opacity effects are possible, not just simple on/off masking. An icon in the toolbox toggles between 'no frisket', 'frisket active' and 'create frisket' modes, so it's easy to flick between states. As with other such programs, it's easy to manipulate the frisket/mask by painting to it directly, adding your last action to it, inverting it and so on. Overall, it does what you'd want any mask to do: allows you to paint to certain areas of the canvas whilst protecting other areas from being affected.
Frisket creation is done directly in Painting mode. In fact, when you're in Painting mode and the frisket icon is toggled into 'create' mode, the regular Painting menu is replaced with a Frisket menu, so that's yet another fairly obscure modal operation to contend with.
Process my application
ProArtisan has a dedicated image processing mode, which is separate from the FX brush in Painting mode, though they both share a common dialogue. In effect, the FX brush that can be used when painting is just one of a much wider selection of effects that can be found on the Process menu. However, anything done in Process mode applies to the whole image. Luckily, though, the frisket is taken into account, so if you only want to process part of your image, you must define a frisket to protect the parts of the picture that you don't want the image processing routines to touch.
The Process menu actually has several options for dealing with the frisket (in addition to those provided on the dedicated Frisket menu that can appear in Painting mode; confused yet?), but let's not waste time worrying about those. The most important and interesting options to discuss here are the Filters and Effects submenus.
These provide the kinds of options that you would expect from any image processing application, though perhaps lacking the range provided by some other software. On the whole, the approach seems to have been to provide facilities that are actually likely to be useful from an artistic point of view, rather than overburdening the program with an excessive number of highly esoteric options.
So, the Filters menu provides just ten basic functions, but they're all pretty useful: Inverse, Tint, Lighten, Darken, Cutoff, Contrast, Anti-Alias, Remove Dots, Colour Shift and Grey Shift. Of those, all but Inverse, Tint and Anti-Alias have dialogue boxes that allow you to alter their strength of application or determine what they do in some other way.
As for the Effects menu, that contains a further nine facilities which fall more into the 'artistic' category: Emboss, Sphere, Find Edges, Halftone, Sharpen, Pattern, Generic, Block and Warp. Some of these are significantly more useful than others, but certainly the most flexible is the Generic option. This provides an editable matrix filter window: there are sixteen useful presets (including sharpen, emboss, anti-alias etc.), but you can edit them all and create your own. This Generic filter window is the same as that provided by the FX brush in Painting mode.
Overall, whilst ProArtisan doesn't provide a huge range of filters and effects, the ones it does supply are indeed useful, and should be helpful for various purposes, from photo-retouching through purely artistic effects to specialised purposes like creating tiled backdrops for the desktop or Web pages.
A quick and simple image processing example: the Block effect was applied to the image, and then Sharpen, to produce a 3D mosaic effect (the original photo is shown at a small scaling in the overlaid window)
I/O, I/O, it's off to work we go...
ProArtisan is distinctly curious in that it requires you to switch into a separate mode in order to be able to save anything.
Once in Input-Output mode you are permitted to save your work as a sprite. RISC OS Squash compression may be applied at the same time (and ProArtisan will also load squashed files without requiring you to unsquash them first). Sprites may also be exported in fewer colours (32 thousand or 256) and at lower resolutions.
A JPEG save option is provided, along with a definable quality setting, and you can save the contents of your sprite pool and your entire collection of palettes. As mentioned above, it is frustratingly not possible to save individual palettes, and it also appears not to be possible to save the contents of the path pool.
The other option provided in I/O mode is a printing facility. This uses the standard RISC OS printing system, of course, and allows you to set the scale of your image and its position on the paper, with convenient 'centre' buttons being provided.
Assessment
As was mentioned near the start of this review, this new release of ProArtisan is functionally identical to the final version produced by Clares. As such, ProArtisan must be viewed as an updated reissue of software that was designed over a decade ago, when computer graphics were not as advanced as they are now. Indeed, ProArtisan grew out of a 256-colour painting package. Digital photography had not come along (though manipulation of PhotoCD images pointed in its general direction), and the expectations surrounding a computer art package were quite different back then. These considerations must all be borne in mind when assessing ProArtisan's place in the grand scheme of things.
At the time of its release, for instance, ProArtisan's modal interface no doubt seemed like a very good idea. The program was clean and uncluttered, and users praised its simplicity and ease of use at the time. Now, though, with the benefit of hindsight, I'm not so sure that I like the interface any more. Whilst ProArtisan is by no means hard to use, it all seems a bit too compartmentalised. The need to switch between modes, and the absence of easy access to common tools like a range of different brush sizes (a standard feature in all modern art packages on other platforms), means that frequent trips to the brush size dialogue are necessary, and that's only one example of a problem that's quite widespread.
Moreover, there is what might be called 'feature leakage' between modes, in that you can paint with drawn paths, use sprites that are housed in the sprite pool in different modes, and so on... and yet to create and alter those sprites and paths, you have to switch to the appropriate tools.
It's quite hard to describe the problem concisely, but the gist of it is that, whilst many of the program's features work well together, they're segregated out into separate modal tools, and the distinctions often seem arbitrary. This all makes it less than obvious how certain features can be used together, and limits the program's flexibility in some ways whilst also giving an impression that there's less flexibility than the program does actually provide.
This is not really a criticism of ProArtisan's capabilities as such: it can do lots of things, and is capable of producing good results. However, its interface feels old fashioned and limited. When Photodesk (widely acknowledged as the leading RISC OS bitmap package by a significant margin) came along, it was quite a revelation in terms of its flexibility, and the way it allowed you to use just about any effect with any tool. It was not modal in the way that packages like ProArtisan and Revelation had been; it had a superior and more modern interface. With ProArtisan, the whole business of what you can do with what tool seems much more strongly defined.
To me, ProArtisan feels to have aged a lot less well than Photodesk, and this is largely attributable to its interface. It doesn't have a bad interface, but it shows its age and feels somewhat inflexible, at least in comparison with more recent competition. That's not to say that ProArtisan isn't a good package; it's just not as impressive as it once was. Of course, that view must be balanced by the fact that it's now very much cheaper than ever before: at a price of under £40, compared with £170 previously, it seems churlish to be over-critical. If you want a bitmap editing package and can't justify the expense of the flagship Photodesk, ProArtisan 24 is a budget alternative that might not give all the bells, whistles and flexibility of the more expensive package, but is at least capable of producing some good results.
I mentioned near the beginning that I had been testing ProArtisan on my Iyonix. The good news is that the application is very pleasantly fast and smooth on this machine: the painting tools certainly feel more natural and fluid than ever before, the image processing options all work very quickly, and overall the speed and power of the machine translate into a pleasant experience in using the software.
However, I have to sound a note of caution concerning the stability of the current version of the software. Aside from experiencing two complete lock-ups while testing ProArtisan, there seem to be various rough edges and instabilities with the current version 1.20 release. I have reported my findings to APDL and hope that the problems will be addressed, but the worst bugs are the unrepeatable ones, where the program suddenly decides to behave oddly and fail to do what you expect it to.
During my testing, whilst the majority of functions worked fine, I certainly encountered a few things that didn't work as they should, and given the program's apparent willingness to do strange things from time to time, I'm just a little cautious about recommending the current release; it feels 'late beta' rather than 'production quality' at present. Anyway, I know that there are plans to develop the software further and add new features, so I hope that the current problems, which are really pretty minor, are temporary at best.
Conclusion
What this all boils down to is that one of the leading RISC OS painting packages from 'the olden days' has made the transition to RISC OS 5 compatibility, and that's a welcome move for any RISC OS application, no matter how venerable it may be.
ProArtisan is not, and has never been, in the same quality bracket as Photodesk, and given that a 32-bit version of Photodesk has already been released, that's what you should buy if you want the leading package in its class.
Nevertheless, ProArtisan is a fine program of its type. It's simpler and probably easier to use than Photodesk, and at its new low price it represents good value. If you have a previous version of ProArtisan 24 then there's no doubt at all that the new 32-bit upgrade is worth the fee: if you can run the program on an Iyonix, you'll find that the extra speed and fluidity of the tools makes the package a much greater pleasure to use than ever before. Existing fans will no doubt be delighted.
And if you don't own ProArtisan 24 already, well, now is as good a time as any to buy it. I hope that the current selection of bugs will be ironed out, even if no new features are added, but even as it stands, it's a capable and easy-to-use painting package with a number of interesting features that make it well worth adding to your software collection.
Dave Holden introduces our discount scheme for subscribers...
Over the past few years APDL has become the major supplier of software for RISC OS. The range continues to grow, and we're well in to a program of updating and improving many of the older titles.
RISCWorld is now entering its fifth year of publication, and a considerable proportion of our subscribers have been with us from the beginning. Although it was never intended as such, the magazine is beginning to feel more like a 'club' than just another periodical. People who telephone APDL to purchase software or hardware, or for help or advice, often begin the conversation with "I'm a RISC World subscriber....."
We have frequently included special offers for software in the magazine. Normally this has been because it's just been reviewed or updated and we want RISC World subscribers to understand that we at APDL think they're slightly more 'special' than other RISC OS users. To acknowledge this we've now decided that in future all RISC World subscribers will be entitled to a 10% discount off all software published by APDL, APDL-ProAction and iSV Products.
This won't apply to 'third party' titles sold by APDL, such as David Pilling's Ovation Pro, or to hardware. But it does include the Topologika titles, since the RISC OS versions are now published by APDL-ProAction.
Getting your discount
To qualify you simply need to be a current RISC World subscriber, that is, your subscription must not have expired, and the goods would normally need to be delivered to the subscription address. So when you order by phone, e-mail or by post remember to state that you are a RISCWorld subscriber, if you don't say so at the time of ordering then you won't get a discount on the order, the system isn't automatic and relies on you, the customer, asking for the discount!
If your RISCWorld subscription has lapsed then you can renew it at the time of ordering and still claim your 10% discount.
Archive on-line
Whilst I am on the subject of the benefits of being a RISCWorld subscriber I ought to remind readers that they are entitled to join the Archive-on-Line mailing list.
In case anyone doesn't know, this is an email group moderated by Keith Johnson. Originally it was set up as an additional resource for subscribers to Archive magazine, but some time ago it was opened up to RISCWorld readers. It's a 'closed' list, which means it's not open to everyone, just those that qualify, and this makes it much more friendly that some of the c.s.a. newsgroups. It's also moderated, which tends to stop some of the people with more extreme views and improve the 'signal to noise' ratio. If you haven't already joined I suggest you give it a try.
A couple of weeks ago there was a problem because the email address seems to have been hijacked by someone who then used it to transmit a virus. This resulted in all outgoing mail from the list being blocked by a company called Energys that monitors the web for various ISP's. Eventually, after investigation, it was realised that the virus did not originate with the 'real' AoL, and so the connection was restored, and things are now back to normal, although as a precautionary measure the email address has been changed.
During the interim a suggestion was made to move the whole list to an alternative system, just in case it wasn't possible to get the problem sorted out, and so for a few days this was tried out with a few subscribers. Since the 'real' system has now been restored the 'alternative' system was discontinued, although it is being held in reserve in case something similar ever happens again. If you did receive mail from this alternative list don't worry.
As a consequence of the hijacking the email address for Archive on Line has been changed. Previously it was archive-on-line@argonet.co.uk. It is no
archive-online@argonet.co.uk Note the dropping of the second hyphen.
The moderator has specifically requested that subscribers using PC's or Macs do not put this in their address books as that is the most likely way in which the previous address was 'harvested'.
Signing on
If you haven't tried Archive on Line before then all you need do is send an email to the above address with SIGNON in the subject line. You should also, in the body of the email, put your full name and address. This is so that it can be checked against the list of RISC World subscribers to ensure that you are entitled to join.
So, your RISC World subscription just got even better value for money!
Dave Holden
ÿÿÿÿISSUE1/VIRTUAL/INDEX.HTM Issue 1, Using Virtual RPC-SE (and VA5000) with 'Restricted Users' on Windows XP
Using Virtual RPC-SE (and VA5000) with 'Restricted Users' on Windows XP
John Crane shares a helpful hint or two...
I've had VA5000 for some time on my Windows XP PC and recently upgraded to VRPC-SE. As what I'm writing here applies equally to both products I shall just refer generically to Virtual Acorn (or VA from here on). Similarly all my references to Windows XP are good for both Home and Professional products.
I have separate user log-ons on said Windows machine, myself with full administrative privileges and everyone else, as what Windows XP affectionately calls 'Restricted users'. In the main to stop my kids fiddling.
I bought Virtual Acorn (at least partly) so that I could effectively have two Acorn Computers on the go at once. I transferred all the kids' Acorn games etc onto the emulated machine so that they could play them whilst I could claim sole ownership of my Risc PC.
Anyway I soon discovered that, because of the way VA works that you really need to be logged on with administrative privileges for it to work. Indeed from a fresh install it will crash without even loading if you try to run it whilst logged on with a 'Restricted' account.
Anyway being a dabbler at heart I set about 'fixing' it so that it would work for 'Restricted' users. I informed Aaron, once I had it sussed and he then invited me to share the experience (that's just a little Windows pun sorry)! So I've put together a step by step guide with appropriate ScreenShots.
A point to note is that my PC is set up with 'Windows Classic' view as against out of the box 'XP TellyTubbies' view, so it may look slightly different to what you have, but not drastically.
There are a couple of prerequisites before you continue.
A reasonable familiarity with Windows definitely helps
You need to be logged on with Administrative privileges to perform 'The Fix'
Ensure you are not using 'Simple File Sharing' as this does not give you sufficient access to set permissions to the level required for this 'fix'. This is set 'On' by default in XP and so if you have never altered it you will need to turn it 'Off'
To turn off 'Simple File Sharing' open up Windows Explorer and on the tool bar select Tools - Folder Options.
In the window which appears select the 'View' Tab and in the area towards the bottom scroll right down to the bottom until you find 'Use simple file sharing (recommended)' This will be ticked by default. Untick it. You will probably get a warning message asking if you're really sure, so say 'Yes
Applying 'The Fix'
You are now ready to start in earnest. Assuming you have installed VirtualAcorn in the normal way proceed as follows :
Using me by way of example. I've installed Virtual Acorn whilst being logged on as 'John'. So by default Virtual Acorn will be installed in my
'Start Menu'. This equates to C:\Documents and Settings\John\Start Menu\Programs and probably a desktop shortcut which equates to C:\Documents and Settings\John\Desktop.
In Windows Explorer - Right Click on the relevant shortcut / Start Menu Group and select Cut from the drop down menu
then navigate to C:\Documents and Settings\All Users\Start Menu\Programs. Now Right Click in the White Space in the Right Hand pane and select 'Paste
from the drop down menu.
Do similar for the Desktop Shortcut this will (following the same logic) end up in C:\Documents and Settings\All Users\Desktop.
This ensures that the shortcuts appear to everyone who logs on (hence all users). It is likely though that, as the shortcuts were originally installed under 'John', only 'John' and any other administrative users will have permission to access the shortcut (s), so the next step is to ensure all users have relevant permissions.
In Windows Explorer - Right Click on the relevant shortcut / Start Menu Group and select 'Properties' from the drop down menu.
In the window which appears click on 'Security' Tab and ensure Permissions for 'Everyone' group are as per the screenshot.
(You may to need to Click 'Add' and then select 'Everyone' group before it actually appears in the list)
Again follow similar logic for the 'Desktop' shortcut
You have now ensured that anyone who logs on (no matter what their level of access) now has permission to access the shortcut(s), and start Virtual Acorn. However we've not quite finished with permissions as if you now logged off and logged back on as a 'Restricted User' and attempted to run Virtual Acorn it would crash without loading. Basically as the program starts it must need some sort of modify / write access to the actual 'Program Files' directory to enable it to successfully load. Restricted Users by default are not allowed to access directories within 'Program Files' so in Windows Explorer navigate to C:\Program Files\ VirtualAcorn. Now Right Click on VirtualAcorn and select 'Properties' from the drop down menu.
Then give 'Everyone' 'Full Control'
As previously you may have to click on 'add' and select the 'Everyone' group.
A point of note here. If you apply the permissions at this level, all subdirectories within VirtualAcorn will inherit these permissions. Thus if you buy Virtual A5000 and set these permissions and then subsequently install VRPC-SE at a later date, the permissions will automatically filter down to the new install.
Ok nearly there now. At this point VA will run for 'Restricted Users', with one restriction. If you click on the CD drive within VA it will show as 'CDdrive cannot be found' This is because VA talks to the CD Drive at SPTI (SCSI Pass Through Interface - Ed) level and you need admin level access to do this.
There is a work round though with the following proviso. If you implement it, you will not be able to share your CD Drive out over a network and also if you ever access your machine remotely via Terminal Services the CD drive will not be available. If neither of these are a problem the following will allow 'Restricted Users to 'get the CD drive back' in Virtual Acorn.
Go to 'Start' - 'Run' and type MMC
An MMC console window will appear. Click on 'File' - 'Add/Remove Snap-in'
In 'Add/Remove Snap-in' window Click 'Add'
In 'Add Standalone Snap-in' window select (highlight) group policy and Click 'Add'
In 'Select Group Policy Object' window 'Local Computer' will be highlighted. Click 'Finish'
In 'Add Standalone Snap-in' window click 'Close'
In 'Add/Remove Snap-in' window it should now say 'Local Computer Policy'. Click 'OK'
Now under Console root by clicking on the + Signs expand
Local Computer Policy\Computer Configuration\Windows Settings\Security Settings\local policies.
Finally clicking on Security options so it is highlighted. Policies should now be displayed in the right hand pane.
Double Click on : Devices: Restrict CD-Rom access to locally logged-on User only. (This will be disabled by default).
In the box which appears click on 'Enabled' then 'Apply', then 'OK'.
Close the MMC console, say 'No' in the box asking you to 'Save Console Settings'.
You've finally done it! Restricted Users can now use Virtual Acorn without any problems, so you can allow your loved ones to use RISC OS without worrying about them messing around with your Windows installation.
So once again I found myself loading up the boot of the car on a Friday morning ready to head up to Wakefield for another RISC OS show. Over the years Wakefield has established itself as the biggest show of the year and anyone who is interested in RISC OS can't have missed the flurry of press releases issued over the couple of weeks prior to the show, so this year the show looked like being even more exciting than usual.
I left home just after 12pm having checked tyres (1 spare centrally mounted), fluids (3 cups of coffee and a couple of cans of diet coke) and all the other minor items like stock, computers, till, float, pens, posters etc. I can normally drive to Wakefield in just over 3 hours, but since the Shogun is bigger and heavier I allowed 4 hours for the trip. In the end I finally drove into Thornes park a bit after 5pm, the delay being caused by roadworks on the M25, a nasty Discovery vs RangeRover accident on the south bound carriage way of the M1, of course on the northbound side we had to wait 45 minutes while rubber neckers got a good eyeful. I then got further delayed by the roadworks in Sheffield, still it wouldn't have mattered as the show stands was only just being finished when I arrived.
I found the stand, then drove round to the nearest unloading bay and then tried to find Graeme. Ah a comedy moment, I am ringing him just as he walks round a corner and we almost bump into each other. We unload all the stuff and then start the "which poster goes where" game. A few years ago I came to Wakefield and forgot my bluetack, so I went out to get some, but nobody seemed to have heard of bluetack, no, they have their own version called whitetack, it's just the same as bluetack except that it's white and doesn't hold anything up. So we spent most of the show leaping around trying to work out which poster was going to fall off next.
Anyway with the stand setup it was time to annoy other exhibitors, Dave Holden was already finished, as were R-Comp, however Stuart Tyrrell wasn't so we spent a pleasant few minutes offering "helpful" hints on stand construction. For some reason the voice of experienced stand setter-uppers didn't go down too well so we made our excuses and left. In the meantime the hall was filling up as other exhibitors arrived.
Graeme, myself and Dave Holden then de-camped the Camponile hotel (a kind of French run Colditz), had some beers, ate some dinner then had another beer or two, then got told the bar was closed.
Saturday
Come the morning everyone else is up and running, but I am still in the land of nod, why? Well getting into bed last night I knocked over my alarm clock and broke it. So I sent the alarm on my phone, which went flat. So just before 9 there is frantic hammering on the window, arghh, I get up and fall into the shower, then fall out again rapidly as it's on cold. It takes 15 minutes to shower, dry, sort myself out and get to the show. Normally you can't park around the hall and have to use the carpark out front, but we have a couple of boxes that we need "to deliver" and so get in, and hence have less far to walk.
We then have a frantic half hour sorting out the stock and delivering stuff to dealers and finish just in time for the show to open. There is a reasonable size queue and people start wandering in, but we stay un-visited for a good 20 minutes, then we have out first paying customer and we are off, before we know what's happened it's 1 in the afternoon and I take a few minutes off the stand for a walk round.
I decide to take the complete walk round starting at the customer entrance. So first up are APDL who have their usual end of block stand. Dave Holden admits that he has been very busy and is running out of both DrawWorks and Sleuth upgrades (by the close of the day he runs out of both - and by Sunday I start wondering if Holden is an old Yorkshire name as he is dancing round the till). Moving past VirtualAcorn, where the new version of VirtualRPC-Adjust is doing brisk business, I bump into Stuart Tyrrell. He has calmed down from yesterday and is showing off the new Unipods as well as the ARM7500 based A75 (which is intended for non desktop customers) and a new A6+. He seems rather happy, indeed over the weekend I notice the stack of boxed A6 machines diminish to almost nothing. I grab a copy of Pocket RISC OS (actually a RISC OS 3.11 ROM made into a key fob) and then notice Stuart's attire, a black polo shirt and a baseball cap? Can I get fries with that? No? Perhaps I could go large for 30p? I won't print his reply but we mutually decide that I will continue my wandering.
I pass a busy looking Ray Favre selling DrWimp books for charity, then I spy Mike Glover from Icon Technology. Has he been to the Dave Holden dance academy? No, but he has sold out of everything inside 2 hours and is well chuffed, it seems that Techwriter and Easiwriter customers are delighted that development on the two packages has re-started. I also spy Martin Wuerthner with the new version of Artworks2 that includes dynamic clipping and looks very very good, next to him is Steffen Huber who has just launched DVD-Burn, as well as continuing development on CD-Burn, he too looks to be having a good show.
I walk past the huge central Quercus stand, selling lots of back issues of Acorn User and Acorn Publisher, as well as board games and all sorts of other things and head past CJE micros and Fourth Dimension who once again seem to have bought the entire shop with them. If there is anything RISC OS related that CJE don't have I will be amazed. Opposite them are Etc systems with a range of RISC OS spares then we have Argonet Internet Services and then IC Software with their range of printed manuals for RISC OS applications.
Next I bump into R-Comp who are doing brisk business in both software and hardware, the new Grapevine2 seems to be a popular purchase. I then swing past the massive charity stall, pausing only to pick up a Cambridge Z88, complete with link cable and PipeDream manual, for a measly £5 (even better when I get a chance to try it later it actually works). I spy Paul Beverley on the Archive Publications stand selling the latest Archive CD, as well as subscriptions. Next along are RISCOS Ltd who have a wide range of machines all running RISC OS Select or RISC OS Adjust. Paul Middleton was doing a healthy trade in RISC OS Select ROM upgrades for existing machines, both real and Virtual, and was continually busy.
Next to them were Liquid Silicon, who had a MicroDigital Omega complete with fully working network card (which are now shipping to customers). Along from them were the MatchMagical Software Company, then Brian Jaques with his web writing CD, a tutorial for HTML designers of all ages and experience levels. Then there was Kate Crennell of Fortran friends showing a wide range of software, and next door were Brain Games. We had a brief chat and were able to sort out a CD writing problem that they had been having.
The next people I saw were the Arm Club, Ralph Sillet told me that the Arm Club Midlands show would be on again this year and promised to come round later with an information pack, which he did. Aemulor and Cino DVD were on display on the next stand, with rumours of a new version of ADFS in the offing for the Iyonix, apparently the current one isn't fast enough to play back DVD movies, and this has delayed the release of Cino. Opposite them was EFF, I did wave at Edward but he was busy with a customer, no doubt exploring the huge range of RISC OS fonts available. I then got badly side tracked by the X-Ample stand, not due to the impending release of Impression X, but due to the build your own Enigma machine kit which had the geek in me jumping up and down, regretfully I forgot to buy one before the show closed and now I will have to e-mail them for a price.
Finally we came round to the biggest stand of the show Castle Technology, who were showing the new Iyonix Panther which was the same machine in a new case, with the same old price. Castle were also muttering about a big order for between 10,000 and 100,000 machines for a customer outside the normal desktop market (as far as I have been able to tell this seems to be for set top boxes that don't run RISC OS). Castle were doing a brisk trade in updates as I saw a number of machines being carried over to the stand to have the mods made to the motherboard. Also on the stand were OreganoUK showing the latest version of Oregano2.
I then headed back to our stand and spent the rest of the day looking after customers. I did get one shock when I was told the show shut at 6pm, no, it must be a wind up, but it wasn't. So once the show shut we stuffed the contents of the till into the laptop case and headed for the hotel and well deserved beer. Then we had to find some dinner, so we walked to the Holmfield Arms, which used to be a nice Beefeater type restaurant and was always heaving, but wait the decor's changed and its empty! We bump into R-Comp who have just had dinner and are not impressed, we take their advice and "high tail" it out without ordering. We walk back to the hotel and all jump in the Shogun. The theory is that we can drive into Wakefield and find a restaurant, ho ho. We don't find any restaurants, but we do find plenty of take-aways, as well as loads of town centre pubs with bouncers on the door. We then spend another half hour driving around trying to find a restaurant. Then I get a smart idea, why don't I use the locator service on my new 3G phone to find the nearest Indian, answer, because the service doesn't work in Wakefield, grrr.
Eventually we end up at the Red Kite on the way back out of Wakefield towards the M1, it's not bad at all, but we only just make dinner before the restaurant shuts. We head back to the hotel, Graeme goes to bed, but Dave Holden and I go to the bar again...
Sunday
Sunday at the show is considerably quieter, although everyone still seems to do good business, with everyone that I spoke to reporting takings to be up on last year. I do get a chance to so a quick video walkround which I have included on this issue of RISCWorld. I don't get time to attend any of the talks, but both Castle and RISCOS Ltd were giving talks on the future of RISC OS, I wonder which of the possible futures we will end up with? John Cartmell gives a talk about Quercus and "what our Acorn's have become", well quite a few of them seem to have become items on the charity stand.
Before we know it it's nearly 4 o'clock and the customers have vanished so we start packing up, and finishing quickly, manage to annoy Stuart Tyrrell yet again with more "helpful" suggestions. Then it's time to say our goodbyes and head to Burger King at the services for some food. We then finally split up and I head back down the M1, pausing only for more rubber neckers, "oh look a car on fire, lets stop next to it!", an abandoned suitcase in the fast lane causing a 45 minute tail back and the usual collection of roadworks. I finally get home a little before 10pm and then unload. Of course next day I have to process the huge pile of credit card receipt and cheques...look I've been to the Dave Holden dance academy as well!
Aaron
ÿÿÿÿISSUE1/WEBFX3D/INDEX.HTM Issue 1, WebFX3D
WebFX3D
RISCWorld presents the WebFX3D Manual.
Introduction
Getting Started
Creating Objects
Working with a scene
Scene Lighting
Rendering
Reference
Add-ons
Hints and Tips
email: dan@dansoft.co.nz
internet: www.dansoft.co.nz
Copyright Daniel M Johnson (c) 1999
Copyright and Disclaimer
Information in this manual is subject to change without notice. Complying with all applicable copyright laws is the responsibility of the user. No part of this document may be reproduced by any means, electronic or mechanical, for any purpose, without the express written permission of Dansoft Developments.
Copyright Dansoft Developments (c) 1999. All rights reserved.
Other product and company names mentioned herein may be trademarks of their respective owners.
RISCWorld
ÿÿÿÿISSUE1/WEBSITE/INDEX.HTM Issue 1, Planning a Website
Planning a Website
Gavin Wraith continues his series
In part 1 I described two general principles that I wanted to apply to the website for which I had been commissioned: Accessibility and Orthogonality. The first effectively means keeping it simple, the second keeping it flexible, with content editable separately from furniture (my term for the overall structure, the means of navigation within the site and any overall theme or style). There is a compromise that any forward planning must settle on, between too little preparation, that can give trouble when unforeseen events require rapid responses, and too much, that leads to wasted effort when plans have to change, say when the commissioners of the project want structural changes. When I was taught to fly gliders, half a century ago, I remember the instructor telling me to keep my eyes on the horizon when we came in to land, and not to focus on particular objects round the runway, and to gauge the craft's attitude out of the corners of my eyes. Coming in to land with a design project is much the same; do not focus on the details obsessively but stay alert.
For my first meeting with the organizers I would need something to show them. Without any content provided yet, all I could do was produce a skeleton. The problem would be that most of its critics would see only the surface appearance, and would not be able to appreciate the necessary work that had gone into the underlying structure. RISCWorld readers, on the other hand, will, I hope, be able to grasp the broader picture. Let me now describe an elementary aspect of planning, often overlooked, which can have a big impact on the real work later on: exploiting the filing system.
I first decided to make the website flat. By this I mean putting all the HTML files into one directory, together with a directory, images, for containing graphics files, and a directory Data for containing all the files from which the HTML files and the graphics files would be constructed. The reason for this choice was that it eliminated a frequent source of bugs - breaking the links to graphics files when files are moved to another directory. When it comes to uploading the site to the server, only the HTML files and the images directory are uploaded - the part indicated within the red oval in the picture above.
The Data directory contained a directory Pages with one high level description file, of type Weave (official filetype number &18d - more about that later) for the contents of each HTML file. My convention was that each Weave file foo created an HTML file foo/html. The furniture for the website was defined in the two text files defs and menus. These files are consulted by the Weave files. Each Weave file can be run separately by double clicking on its icon. The effect is to create the corresponding HTML file. They can all be run simultaneously by double clicking the Obey file Update! which simply contains the line:
do repeat filer_run <Obey$dir>.Pages -type 18d
This updates the whole site after any changes made in the high level description. With this scheme all the website contents go in the directory Pages and all the furniture in defs and menus. Thus is orthogonality achieved.
The scheme that I outline here is about the simplest one can contemplate. To add another webpage means putting another file into Pages and editing menus, which describes a navigation bar. In fact even that could be automated, were it not that labels for navigation buttons are not always best described by filenames. It is also good for a framed version of the website. In that case each Weave file foo should create two HTML files, foo/html and foo0/html, for the framed and unframed versions of the page. It is easiest to construct the HTML file defining the actual framesets by hand, because these are not in the form that Weave assumes as default for webpages. One also needs Weave files for each of the furniture frames. These could all go in their own directory to preserve the barrier between furniture and content. The unframed version of a page will use a table mimicking the framesets and all the furniture entries of the table will be filled in by data from defs and menus. It is important to understand that the Weave files defining the content remain exactly the same, because the differences between the framed and unframed versions can all be hidden in functions defined in defs.
You often see websites with fancy buttons for navigation. Indeed, there are button-factories out there on the internet that provide a bewildering variety of styles and colours. I did not see how I could use these and still retain the flexibility I needed for being able to update with new pages at the drop of a hat. I did a little experimenting with making my own buttons and swiftly came to the conclusion that I lacked the requisite graphics software to do the task satisfactorily. The simplest, easiest and most boring solution is just to click on text. I decided in the end to go for a compromise and have navigation bars resembling lists where each item consists of a graphic followed by text. The graphic would have two forms, open for the current page and closed for the rest, like directory icons.
Now, is this construction actually going to deliver the goods? Much as I had anticipated, when it came to showing off my initial efforts to the sponsors, the only feedback I got concerned the visible details. This taught me that it is probably better to keep mum about the underlying structure. After all, it is what is visible that is the end product, and burdening people with what they do not need to know is not a good idea. What I lacked now was some content, and in particular some appropriate graphics. The only graphic that I had constructed, as decoration for my skeleton, would, I was assured, induce apoplexy in certain quarters, so I hastened to remove it. At least I did get some useful advice about the diverse parts that the website should comprise. However, this brought home to me the realization that putting all the webpages in one directory might turn out to be a bad idea. In the absence of useful content from the sponsors, my only recourse was to experiment with another website that already had plenty of that, but which needed a fundamental restructuring - my own.
So, was it to be back to the drawing board, or could I extend my ideas for orthogonality to non-flat websites? One aspect of the design above that I did not like was having the Data directory inside the directory holding the webpages. It would have been better to have it outside so that all the material to be ftped to the server was in one directory. In fact, I found it fairly straightforward to modify the structure described above to work for a hierarchically structured website, so long as I adopted the following conventions:
All the webpages in a given subdirectory should share the same furniture
Each subdirectory of webpages is ordered by the position of objects in the common navigation bar for it. The bottom item in the navigation bar leads back to the top item in the parent directory, if there is one
So the new structure would consist of two directories at the same level. Data holds the Weave source for the website and site holds the website itself:
The directory structure inside site should be mirrored by a similar structure inside Data, and each corresponding subdirectory in Data should have the standard equipment that we have seen before.
This scheme provides a compromise between simplicity and flexibility. It keeps the part to be uploaded to the server separate from the machinery that creates it, and allows the furniture to vary according to the subdirectory. Each subdirectory of the website can be updated as a whole by doubleclicking the corresponding Update! obeyfile.
So far I have avoided giving any details about the Weave webpage-description language. They will have to wait for the next instalment, but in preparation let me point out that an HTML document can be viewed as a sort of tree. For example:
The names in red denote text that you fill in, those in black are HTML tags. The corresponding Weave expression is:
{
DOCTYPE
HTML
HEAD(TITLE(titletext))
BODY
H1(heading)
P
text1
UL
LI; text2
LI; text3
} ; -- U
}; -- BOD
}; -- HTM
};
Note that the red names correspond to variables, in lower case. Sequences are enclosed in braces and items are separated by semicolons. The -- symbol just denotes a comment. The HTML tags DOCTYPE, P and LI are just constants while HTML, HEAD, TITLE, BODY, H1 and UL are functions; this is because they have corresponding end-tags. What comes between the start-tag and end-tag is the argument, which could be some complicated expression. The parentheses round the function argument can be omitted when the argument is an explicit sequence. But the point about Weave as opposed to HTML is not the different syntax but the fact that you can use variables and functions. In fact Weave provides one or two other keywords (always in capitals to distinguish them from variables in lower case) in addition to HTML tags which means that you do not have to bother with DOCTYPE, HTML, HEAD, TITLE or BODY - a standard template is set up for you.
For the purposes of understanding how the separation of content from furniture is achieved, I will mention here just one of the extra keywords, the function DOFILE. This takes a file's pathname as argument, and calling the function causes the Weave statements in the file to be executed. So common definitions can be used by putting them in separate files and then using DOFILE. Its use is like that of #include in C. The defs and menus files in the scheme outlined above are incorporated into the individual Weave scripts in the Pages directory this way. Because Weave is a higher-order language than HTML we are able to modularize the construction of webpages in ways that are impossible using HTML alone.